|
|
Publisert på 13.06.2018 11:07:11
|
|
|

For det første er varchar(max) en erstatning for tekstdatatypen som brukes av Microsoft,Eldre felttyper som tekst kan kanselleres i senere versjoner。 Så hvilken tekst som kan lagres, varchar(max) kan definitivt lagres. Faktisk er antallet tegn den kan lagre veldig stort. De 420 millioner tegnene som kan lagres er vanskelige å nå, noe jeg tror er vanskelig å nå.
Jeg visste det bare førtekst og bilde er datatyper som kan være utdaterte av SQL Server, men den spesifikke grunnen er ikke klar, da jeg leste i dag, fant jeg forskjellen mellom tekst og varchar(max) og nvarchar(max), hovedsakelig på grunn av begrensningen av operatorer, tekst kan bare brukes av følgende funksjoner:
| funksjon | Utsagn | | DATALENGDE | READTEXT | | PATINDEX | SETT TEKSTSTØRRELSE | | DELSTRENG | OPPDATERINGSTEKST | | TEKSTPTR | WRITETEXT | | TEXTVALID | |
For eksempel, hvis datatypen i "Text"-kolonnen er tekst, kan den ikke brukes for operasjoner som "=" og "left()", som i følgende eksempel:
Lag en tabell og fyll ut dataene:
hvis finnes (velg * fra sysobjects der id = OBJECT_ID('[asdf]') og OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP-TABELL [asdf]
OPPRETT TABELL [asdf] (
[inttest] [int] IDENTITET (1, 1) IKKE NULL ,
[tekst] [tekst] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABELL [ASDF] MED NOCHECK ADD CONSTRAINT [PK_asdf] PRIMÆRNØKKEL IKKE-KLYNGET ( [inttest] )
SETT IDENTITY_INSERT [ASDF] PÅ
SETT inn [asdf] ( [inttest] , [tekst] , [varcharmax] ) VERDIER ( 1 , '1111111' , '1111111' )
SETT IDENTITY_INSERT [ASDF] I GANG
Kjør spørringen:
Forespørsel 1: VELG [tekst]
,[varcharmax]
FRA [testDB]. [dbo]. [ASDF]
hvor
[tekst] ='11111' OG
[varcharmax] = '1111111'
Følgende feilmelding vises:
Melding 402, nivå 16, stat 1, linje 1
Datatypene text og varchar er ikke kompatible i equal-to-operatoren.
Forespørsel 2: VELG [tekst]
,[varcharmax]
FRA [testDB]. [dbo]. [ASDF]
hvor
[varcharmax] = '1111111'
kan kjøre vellykket
I MS SQL2005 og oppover, legg til store verdidatatyper (varchar(max), nvarchar(max), varbinary(max)). Datatypen med stor verdi kan lagre opptil 2^30-1 byte data.
Disse datatypene er atferdsmessig identiske med de mindre datatypene varchar, nvarchar og varbinary.
Microsofts påstand er å erstatte de tidligere tekst-, ntekst- og bildedatatypene med denne datatypen, og korrespondansen mellom dem er:
varchar(max)-------tekst;
nvarchar(max)-----ntext;
varbinary(max)----bilde.
Med datatyper med stor verdi er det mye mer fleksibelt å jobbe med data med stor verdi enn før. For eksempel kan ikke tekst brukes 'som' før, men etter varchar(max) finnes det ikke disse problemene, fordi varchar(max) er det samme som varchar(n) i oppførsel, så det som kan brukes i varcahr kan også brukes på varchar(max).
I tillegg støtter dette bruk av AFTER-triggere på kolonnereferanser med store verdier i datatyper i innsatte og slettede tabeller. Teksten er ikke bra, kort sagt, etter å ha brukt datatypen med stor verdi, er jeg «midjen min gjør ikke vondt lenger, beina mine er ikke ømme, og jeg kan gå opp til sjette etasje i ett åndedrag». Hva venter du på? Bruk typen med stor verdi.
|
Foregående:Uh-huh, eh-huh, eh-huhNeste:EF (lambda-uttrykk) spørringer flere unntak som finnes i dataene
|