|
|
Publicerad på 2018-06-13 11:07:11
|
|
|

För det första är varchar(max) en ersättning för den textdatatyp som används av Microsoft,Äldre fälttyper som text kan avbrytas i senare versioner。 Så vilken text som kan sparas, varchar(max) kan definitivt sparas. Faktum är att antalet tecken den kan lagra är mycket stort. De 420 miljoner tecken som kan lagras är svåra att nå, vilket jag tror är svårt att nå.
Jag visste det bara innantext och bild är datatyper som kan vara föråldrade av SQL Server, men den specifika anledningen är oklar, när jag läste idag fann jag skillnaden mellan text och varchar(max) och nvarchar(max), främst på grund av begränsningen av operatorer, text kan endast användas av följande funktioner:
| funktion | Uttalande | | DATALÄNGD | LÄSTEXT | | PATINDEX | STÄLL TEXTSTORLEK | | UNDERSTRÄNG | UPPDATERINGSTEXT | | TEXTPTR | SKRIVTEXT | | TEXTVALID | |
Till exempel, om datatypen i kolumnen "Text" är text, kan den inte användas för operationer som "=" och "left()", som i följande exempel:
Skapa en tabell och fyll i datan:
om finns (välj * från sysobjects där id = OBJECT_ID('[asdf]') och OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [asdf]
SKAPA TABELL [asdf] (
[inttest] [int] IDENTITET (1, 1) INTE NULL ,
[sms] [sms] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] MED NOCHECK ADD CONSTRAINT [PK_asdf] PRIMÄRNYCKEL ICKE-KLUSTRADE ( [inttest])
SÄTT IDENTITY_INSERT [ASDF] PÅ
INFOGA [asdf] ( [inttest] , [text] , [varcharmax] ) VÄRDEN ( 1 , '1111111' , '1111111' )
SÄTT IDENTITY_INSERT [ASDF] IGÅNG
Kör frågan:
Förfrågan 1: VÄLJ [text]
,[varcharmax]
FRÅN [testDB]. [dbo]. [ASDF]
där
[text] ='11111' OCH
[varcharmax] = '1111111'
Följande felmeddelande visas:
MSG 402, Nivå 16, Stat 1, Rad 1
Datatyperna text och varchar är inte kompatibla i equal-to-operatorn.
Förfrågan 2: VÄLJ [text]
,[varcharmax]
FRÅN [testDB]. [dbo]. [ASDF]
där
[varcharmax] = '1111111'
kan köra framgångsrikt
I MS SQL2005 och uppåt, lägg till stora värdedatatyper (varchar(max), nvarchar(max), varbinär(max)). Datatypen med stort värde kan lagra upp till 2^30–1 byte data.
Dessa datatyper är beteendemässigt identiska med de mindre datatyperna varchar, nvarchar och varbinära.
Microsofts påstående är att ersätta de tidigare text-, ntext- och bilddatatyperna med denna datatyp, och korrespondensen mellan dem är:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinary(max)----bild.
Med datatyper med stort värde är det mycket mer flexibelt att arbeta med data med stort värde än tidigare. Till exempel kan text inte användas 'lika' tidigare, men efter varchar(max) finns inga dessa problem, eftersom varchar(max) är samma som varchar(n) i beteende, så det som kan användas i varchar(max) kan användas på varchar(max).
Dessutom stödjer detta användningen av AFTER-triggers på kolumnreferenser för stora datatyper i insatta och raderade tabeller. Texten är inte bra, kort sagt, efter att ha använt högvärdesdatatypen är jag "min midja gör inte längre ont, mina ben är inte ömma, och jag kan ta mig upp till sjätte våningen på ett andetag". Vad väntar du på, använd typen med stort värde.
|
Föregående:Uh-huh, eh-huh, eh-huhNästa:EF (lambda-uttryck) förfrågar flera undantag som påträffas i datan
|