|
|
Pubblicato su 13/06/2018 11:07:11
|
|
|

Innanzitutto, varchar(max) è un sostituto del tipo di dato testuale usato da Microsoft,Tipi di campo più vecchi, come il testo, possono essere cancellati nelle versioni successive。 Quindi quale testo può essere salvato, varchar(max) può sicuramente essere salvato. In effetti, il numero di caratteri che può memorizzare è molto elevato. I 420 milioni di caratteri che possono essere memorizzati sono difficili da raggiungere, e credo che sia difficile da raggiungere.
Lo sapevo solo primatesto e immagine sono tipi di dati che potrebbero diventare obsoleti da SQL Server, ma la ragione specifica non è chiara, quando ho letto oggi, ho trovato la differenza tra text e varchar(max) e nvarchar(max), principalmente a causa della restrizione degli operatori, il testo può essere usato solo dalle seguenti funzioni:
| funzione | Affermazione | | DATALENGTH | READTEXT | | PATINDEX | IMPOSTA LA DIMENSIONE DEL TESTO | | SOTTOSTRINGA | AGGIORNAMENTO TESTO | | TEXTPTR | WRITETEXT | | TEXTVALID | |
Ad esempio, se il tipo di dato della colonna "Testo" è testo, allora non può essere usato per operazioni come "=" e "left()", come nel seguente esempio:
Crea una tabella e popolare i dati:
if exists (seleziona * da sysobjects dove id = OBJECT_ID('[asdf]') e OBJECTPROPERTY(id, 'IsUserTable') = 1)
TAVOLO DI CONSEGNA [ASDF]
CREATE TABLE [asdf] (
[inttest] [int] IDENTITÀ (1, 1) NON NULLA ,
[testo] [testo] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] CON NOCHECK ADD VINCOLO [PK_asdf] CHIAVE PRIMARIA NON CLUSTERIZZATA ( [inttest] )
INIZIA IDENTITY_INSERT [ASDF]
INSERIRE [asdf] ( [inttest] , [testo] , [varcharmax] ) VALORI ( 1 , '1111111', '1111111' )
ATTIVA IDENTITY_INSERT [ASDF]
Esegui la query:
Richiesta 1: SELECT [testo]
,[varcharmax]
DA [testDB]. [dbo]. [ASDF]
dove
[testo] ='11111' E
[varcharmax] = '1111111'
Compare il seguente messaggio di errore:
Msg 402, Livello 16, Stato 1, Linea 1
I tipi di dati text e varchar non sono compatibili nell'operatore uguale a .
Inchiesta 2: SELECT [testo]
,[varcharmax]
DA [testDB]. [dbo]. [ASDF]
dove
[varcharmax] = '1111111'
può funzionare con successo
Nei MS SQL2005 e superiori, aggiungi tipi di dati di grande valore (varchar(max), nvarchar(max), varbinary(max)). Il tipo di dato di grande valore può memorizzare fino a 2^30-1 byte di dati.
Questi tipi di dati sono comportamentalmente identici ai tipi di dati più piccoli varchar, nvarchar e varbinary.
L'affermazione di Microsoft è di sostituire i precedenti tipi di dati, testo e immagine con questo tipo di dato, e la corrispondenza tra di essi è:
varchar(max)-------testo;
nvarchar(max)-----ntext;
varbinary(max)----image.
Con i tipi di dati di grande valore, è molto più flessibile lavorare con dati di grande valore rispetto a prima. Ad esempio, il testo non può essere usato 'come' prima, ma dopo varchar(max) non ci sono questi problemi, perché varchar(max) è uguale a varchar(n) nel comportamento, quindi ciò che può essere usato in varcahr può essere usato su varchar(max).
Inoltre, questo supporta l'uso di trigger AFTER su riferimenti di colonne di grande valore in tabelle inserite e eliminate. Il testo non è buono, in breve, dopo aver usato il tipo di dato di grande valore, sono stato "la mia vita non fa più male, le gambe non mi fanno male e posso salire al sesto piano in un solo respiro". Cosa aspetti, usa il tipo di grande valore.
|
Precedente:Uh-huh, eh-huh, eh-huhProssimo:EF (espressione lambda) interroga diverse eccezioni incontrate nei dati
|