|
|
Paskelbta 2018-06-13 11:07:11
|
|
|

Pirma, varchar(max) yra "Microsoft" naudojamo teksto duomenų tipo pakaitalas,Senesni laukų tipai, pvz., tekstas, vėlesnėse versijose gali būti atšaukti。 Taigi, kokį tekstą galima išsaugoti, varchar( max) tikrai galima išsaugoti. Tiesą sakant, simbolių skaičius, kurį jis gali išsaugoti, yra labai didelis. 420 milijonų simbolių, kuriuos galima saugoti, yra sunkiai pasiekiami, o tai, manau, yra sunkiai pasiekiama.
Aš žinojau tik anksčiautekstas ir vaizdas yra duomenų tipai, kurie gali būti pasenę SQL serveryje, bet konkreti priežastis nėra aiški, kai šiandien skaičiau, radau skirtumą tarp teksto ir varchar(max) ir nvarchar(max), daugiausia dėl operatorių apribojimo, tekstas gali būti naudojamas tik šiomis funkcijomis:
| funkcija | Pareiškimas | | DUOMENŲ ILGIS | SKAITYTI TEKSTĄ | | PATINDEX | NUSTATYTI TEKSTO DYDĮ | | POEILUTĖ | ATNAUJINIMO TEKSTAS | | TEXTPTR | RAŠYTITEKSTĄ | | TEKSTAS GALIOJA | |
Pavyzdžiui, jei stulpelio "Tekstas" duomenų tipas yra tekstas, jo negalima naudoti tokioms operacijoms kaip "=" ir "left()", pvz., šiame pavyzdyje:
Sukurkite lentelę ir užpildykite duomenis:
if exists (pasirinkite * iš sysobjects, kur id = OBJECT_ID('[asdf]') ir OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP LENTELĖ [asdf]
SUKURTI LENTELĘ [asdf] (
[inttest] [int] Tapatybė (1, 1) nėra nulinė,
[tekstas] [tekstas] NULL ,
[varcharmax] varchar(max) NULL )
KEISTI LENTELĘ [asdf] SU NOCHECK PRIDĖTI APRIBOJIMĄ [PK_asdf] PIRMINIS RAKTAS NESUGRUPUOTAS ( [inttest] )
NUSTATYTI IDENTITY_INSERT [asdf] ĮJUNGTA
INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) VALUES ( 1 , '1111111' , '1111111' )
IŠJUNGTI IDENTITY_INSERT [asdf]
Vykdyti užklausą:
1 užklausa: SELECT [tekstas]
,[varcharmax]
IŠ [testDB]. [DBO]. [asdf]
kur
[text] ='11111' IR
[varcharmax] = '1111111'
Rodomas šis klaidos pranešimas:
Msg 402, 16 lygis, 1 būsena, 1 eilutė
Duomenų tipai text ir varchar nesuderinami su operatoriumi lygus su.
2 užklausa: SELECT [tekstas]
,[varcharmax]
IŠ [testDB]. [DBO]. [asdf]
kur
[varcharmax] = '1111111'
gali sėkmingai veikti
MS SQL2005 ir naujesnėse versijose pridėkite didelės vertės duomenų tipus (varchar(max), nvarchar(max), varbinary(max)). Didelės vertės duomenų tipas gali saugoti iki 2^30-1 baitų duomenų.
Šie duomenų tipai elgsenos požiūriu yra identiški mažesniems duomenų tipams varchar, nvarchar ir varbinary.
"Microsoft" teigia, kad ankstesni teksto, ntext ir vaizdo duomenų tipai bus pakeisti šiuo duomenų tipu, o jų atitikimas yra:
varchar(max)-------tekstas;
nvarchar(max)-----ntext;
varbinary(max)----image.
Naudojant didelės vertės duomenų tipus, dirbti su didelės vertės duomenimis yra daug lanksčiau nei anksčiau. Pavyzdžiui, tekstas negali būti naudojamas "kaip" anksčiau, bet po varchar(max) šių problemų nėra, nes varchar(max) elgesiu yra tas pats, kas varchar(n), todėl tai, ką galima naudoti varcahr, gali būti naudojama varchar(max).
Be to, tai palaiko AFTER paleidiklių naudojimą didelės reikšmės duomenų tipo stulpelių nuorodose įterptose ir panaikintose lentelėse. tekstas nėra geras, trumpai tariant, panaudojus didelės vertės duomenų tipą, esu "juosmens nebeskauda, kojos neskauda, ir galiu vienu įkvėpimu pakilti į šeštą aukštą". Ko laukiate, naudokite didelės vertės tipą.
|
Ankstesnis:Uh-huh, eh-huh, eh-huhKitą:EF (lambda išraiška) pateikia užklausas kelioms duomenų išimtims
|