|
|
Postat pe 13.06.2018 11:07:11
|
|
|

În primul rând, varchar(max) este un substitut pentru tipul de date text folosit de Microsoft,Tipuri mai vechi de câmpuri, cum ar fi textul, pot fi anulate în versiunile ulterioare。 Deci ce text poate fi salvat, varchar( max) poate fi salvat cu siguranță. De fapt, numărul de caractere pe care le poate stoca este foarte mare. Cele 420 de milioane de caractere care pot fi stocate sunt greu de accesat, ceea ce cred că este greu de atins.
Știam doar înainteTextul și imaginea sunt tipuri de date care pot fi depășite de SQL Server, dar motivul specific nu este clar, când am citit astăzi, am găsit diferența dintre text și varchar(max) și nvarchar(max), în principal din cauza restricției operatorilor, textul poate fi folosit doar de următoarele funcții:
| funcționa | Enunț | | LUNGIMEA DATELOR | TEXTUL CITIT | | PATINDEX | SETEAZĂ DIMENSIUNEA TEXTULUI | | SUBSTRING | ACTUALIZARE | | TEXTPTR | WRITETEXT | | TEXTVALID | |
De exemplu, dacă tipul de date al coloanei "Text" este text, atunci nu poate fi folosit pentru operații precum "=" și "left()", cum ar fi următorul exemplu:
Creează un tabel și completează datele:
dacă există (selectează * din sysobjects unde id = OBJECT_ID('[asdf]') și OBJECTPROPERTY(id, 'IsUserTable') = 1)
MASĂ DE CĂDERE [ASDF]
CREATE TABLE [asdf] (
[inttest] [int] IDENTITATE (1, 1) NENULĂ ,
[text] [text] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] CU NOCHECK ADD CONSTRAINT [PK_asdf] CHEIE PRIMARĂ NECLUSTERATĂ ( [inttest] )
PORNEȘTE IDENTITY_INSERT [ASDF]
INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) VALORI ( 1 , '1111111', '1111111' )
PORNEȘTE IDENTITY_INSERT [ASDF]
Rulează interogarea:
Anchetă 1: SELECT [text]
,[varcharmax]
DE la [testDB]. [dbo]. [ASDF]
unde
[text] ='11111' ȘI
[varcharmax] = '1111111'
Următorul mesaj de eroare apare:
Msg 402, Nivelul 16, Stat 1, Linia 1
Tipurile de date text și varchar nu sunt compatibile în operatorul egal cu .
Ancheta 2: SELECT [text]
,[varcharmax]
DE la [testDB]. [dbo]. [ASDF]
unde
[varcharmax] = '1111111'
poate funcționa cu succes
În MS SQL2005 și versiuni, adaugă tipuri de date cu valoare mare (varchar(max), nvarchar(max), varbinary(max)). Tipul de date cu valoare mare poate stoca până la 2^30-1 octet de date.
Aceste tipuri de date sunt comportamental identice cu tipurile mai mici varchar, nvarchar și varbinary.
Afirmația Microsoft este de a înlocui tipurile anterioare de text, ntext și imagini cu acest tip de date, iar corespondența dintre ele este:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinary(max)----image.
Cu tipuri de date cu valoare mare, este mult mai flexibil să lucrezi cu date de valoare mare decât înainte. De exemplu, textul nu poate fi folosit "ca" înainte, dar după varchar(max) nu mai există aceste probleme, deoarece varchar(max) este același ca comportament cu varchar(n), deci ceea ce poate fi folosit în varcahr poate fi folosit pe varchar(max).
În plus, aceasta suportă utilizarea declanșatoarelor AFTER pe referințe de coloane de tip de date de valoare mare în tabelele inserate și șterse. Textul nu e bun, pe scurt, după ce am folosit tipul de date cu valoare mare, sunt "nu mă mai doare talia, picioarele nu mă dor și pot urca la etajul șase dintr-o singură respirație". Ce mai aștepți, folosește tipul cu valoare mare.
|
Precedent:Uh-huh, eh-huh, eh-huhUrmător:EF (expresia lambda) interoghează mai multe excepții întâlnite în date
|