Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 11633|Svar: 0

[Kilde] Der er en forskel mellem tekst- og varchar(max)-datatyper i SQL Server

[Kopier link]
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:
funktionUdtalelse
DATALÆNGDELÆSETEKST
PATINDEXSÆT TEKSTSTØRRELSE
UNDERSTRENGOPDATERINGSTEKST
SMSWRITETEXT
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-huh
Næste:EF (lambda-udtryk) forespørger flere undtagelser, der findes i dataene
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com