|
|
Opslået på 13/06/2018 11.07.11
|
|
|

For det første er varchar(max) en erstatning for den tekstdatatype, som Microsoft bruger,Ældre felttyper som tekst kan blive annulleret i efterfølgende versioner。 Så hvilken tekst der kan gemmes, kan varchar(max) helt sikkert gemmes. Faktisk er antallet af tegn, den kan lagre, meget stort. De 420 millioner tegn, der kan lagres, er svære at nå, hvilket jeg mener er svært at nå.
Jeg vidste det kun førtekst og billede er datatyper, der kan være forældede af SQL Server, men den specifikke årsag er ikke klar, da jeg læste i dag, fandt jeg forskellen mellem tekst og varchar(max) og nvarchar(max), hovedsageligt på grund af begrænsningen af operatorer, tekst kan kun bruges af følgende funktioner:
| funktion | Udtalelse | | DATALÆNGDE | LÆSETEKST | | PATINDEX | SÆT TEKSTSTØRRELSE | | UNDERSTRENG | OPDATERINGSTEKST | | SMS | WRITETEXT | | TEKSTGYLDIG | |
For eksempel, hvis datatypen i kolonnen "Tekst" er tekst, kan den ikke bruges til operationer som "=" og "left()", såsom følgende eksempel:
Opret en tabel og udfyld dataene:
hvis findes (vælg * fra sysobjects hvor id = OBJECT_ID('[asdf]') og OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [asdf]
OPRETTE TABEL [asdf] (
[inttest] [int] IDENTITET (1, 1) IKKE NULL ,
[tekst] [tekst] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] MED NOCHECK ADD CONSTRAINT [PK_asdf] PRIMÆRNØGLE NONCLUSTERED ( [inttest] )
SÆT IDENTITY_INSERT [ASDF] PÅ
INDSÆT [asdf] ( [inttest] , [tekst] , [varcharmax] ) VÆRDIER ( 1 , '1111111' , '1111111' )
SÆT IDENTITY_INSERT [asdf] AFSTED
Kør forespørgslen:
Forespørgsel 1: VÆLG [tekst]
,[varcharmax]
FRA [testDB]. [DBO]. [asdf]
hvor
[tekst] ='111111' OG
[varcharmax] = '1111111'
Følgende fejlmeddelelse vises:
Msg 402, Niveau 16, Stat 1, Linje 1
Datatyperne tekst og varchar er ikke kompatible i operatoren lige med operatoren.
Forespørgsel 2: VÆLG [tekst]
,[varcharmax]
FRA [testDB]. [DBO]. [asdf]
hvor
[varcharmax] = '1111111'
kan løbe succesfuldt
I MS SQL2005 og derover, tilføj store værdidatatyper (varchar(max), nvarchar(max), varbinary(max)). Den store værdidatatype kan lagre op til 2^30-1 byte data.
Disse datatyper er adfærdsmæssigt identiske med de mindre datatyper varchar, nvarchar og varbinary.
Microsofts påstand er at erstatte de tidligere tekst-, ntekst- og billeddatatyper med denne datatype, og overensstemmelsen mellem dem er:
varchar(max)-------tekst;
nvarchar(max)-----ntext;
varbinary(max)----billede.
Med store værdidatatyper er det langt mere fleksibelt at arbejde med store værdidata end tidligere. For eksempel kan tekst ikke bruges 'som' før, men efter varchar(max) er der ikke disse problemer, fordi varchar(max) er det samme som varchar(n) i adfærd, så det, der kan bruges i varcahr, kan også bruges på varchar(max).
Derudover understøtter dette brugen af AFTER-triggere på kolonnereferencer til store værdidatatyper i indsatte og slettede tabeller. Teksten er ikke god, kort sagt, efter at have brugt datatypen med stor værdi, er jeg "min talje gør ikke længere ondt, mine ben er ikke ømme, og jeg kan gå op til sjette etage på ét åndedrag". Hvad venter du på? Brug typen med stor værdi.
|
Tidligere:Uh-huh, eh-huh, eh-huhNæste:EF (lambda-udtryk) forespørger flere undtagelser, der findes i dataene
|