|
|
Postitatud 13.06.2018 11:07:11
|
|
|

Esiteks on varchar(max) Microsofti kasutatava tekstiandmetüübi asendaja,Vanemad väljatüübid, nagu tekst, võidakse hilisemates versioonides tühistada。 Nii et millist teksti saab salvestada, varchar (max) saab kindlasti salvestada. Tegelikult on salvestatavate märkide arv väga suur. 420 miljonit tähemärki, mida saab salvestada, on raskesti ligipääsetavad, mis minu arvates on raske kätte saada.
Ma teadsin seda ainult varemtekst ja pilt on andmetüübid, mis võivad SQL Serveri poolt aeguda, kuid konkreetne põhjus pole selge, kui ma täna lugesin, leidsin erinevuse teksti ja varchar(max) ning nvarchar(max) vahel, peamiselt operaatorite piirangute tõttu, teksti saab kasutada ainult järgmiste funktsioonide poolt:
| funktsioon | Avaldus | | ANDMEPIKKUS | LOE TEKST | | PATINDEX | SEA TEKSTISUURUS | | ALAMSTRING | UUENDUSTEKST | | TEXTPTR | WRITETEXT | | TEXTVALID | |
Näiteks, kui veeru "Tekst" andmetüüp on tekst, siis seda ei saa kasutada operatsioonide jaoks nagu "=" ja "left()", näiteks järgmise näite puhul:
Loo tabel ja täida andmed:
kui eksisteerib (vali * sysobjectsist, kus id = OBJECT_ID('[asdf]') ja OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [asdf]
LOO TABEL [asdf] (
[inttest] [int] IDENTITEET (1, 1) EI OLE NULL ,
[tekst] [tekst] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] WITH NOCHECK LISA PIIRANG [PK_asdf] PRIMAARVÕTI MITTEKLASTERDATUD ( [inttest])
PANE IDENTITY_INSERT [ASDF] SISSE
INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) VÄÄRTUSED ( 1 , '1111111' , '1111111' )
PANE IDENTITY_INSERT [ASDF] KÄIMA
Esita päring:
Päring 1: SELECT [tekst]
,[varcharmax]
ALLIKAS [testDB]. [dbo]. [ASDF]
kus
[tekst] ='11111' JA
[varcharmax] = '1111111'
Ilmub järgmine veateade:
Signaal 402, tase 16, osariik 1, rida 1
Andmetüübid text ja varchar ei ole ühilduvad võrdse operaatoriga.
Päring 2: SELECT [tekst]
,[varcharmax]
ALLIKAS [testDB]. [dbo]. [ASDF]
kus
[varcharmax] = '1111111'
võib edukalt töötada
MS SQL2005 ja kõrgemates lisatakse suurte väärtustega andmetüübid (varchar(max), nvarchar(max), varbinary(max)). Suure väärtusega andmetüüp suudab salvestada kuni 2^30-1 baiti andmeid.
Need andmetüübid on käitumuslikult identsed väiksemate andmetüüpidega varchar, nvarchar ja varbinaarne.
Microsofti väide on asendada varasemad teksti-, n-teksti- ja pilditüübid selle andmetüübiga ning nende vastavus on:
varchar(max)-------tekst;
nvarchar(max)-----ntext;
varbinaar(max)----pilt.
Suure väärtusega andmetüüpidega on palju paindlikum töötada suure väärtusega andmetega kui varem. Näiteks teksti ei saa kasutada 'like' enne, kuid pärast varchar(max) pole neid probleeme, sest varchar(max) on käitumiselt sama mis varchar(n), seega saab varchar(max) kasutada ka varchar(max)-l.
Lisaks toetab see AFTER-päästikute kasutamist suure väärtusega andmetüübi veeru viidetel lisatud ja kustutatud tabelites. Tekst ei ole hea, lühidalt, pärast suure väärtusega andmetüübi kasutamist olen "mu vöökoht ei valuta enam, jalad ei valuta ja ma saan ühe hingetõmbega kuuendale korrusele minna". Mida sa ootad, kasuta suure väärtuse tüüpi.
|
Eelmine:Uh-huh, eh-huh, eh-huhJärgmine:EF (lambda väljend) pärib mitmeid andmetes esinevaid erandeid
|