See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 11633|Vastuse: 0

[Allikas] SQL Serveris on erinevus teksti ja varchar(max) andmetüüpide vahel

[Kopeeri link]
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:
funktsioonAvaldus
ANDMEPIKKUSLOE TEKST
PATINDEXSEA TEKSTISUURUS
ALAMSTRINGUUENDUSTEKST
TEXTPTRWRITETEXT
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-huh
Järgmine:EF (lambda väljend) pärib mitmeid andmetes esinevaid erandeid
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com