In SQL Server, SET TEXTSIZE
specifica la dimensione di varchar(max) , nvarchar(max) , variabile(max) , testo , ntesto e immagine dati restituiti da un SELECT
dichiarazione.
Microsoft consiglia che sms , ntesto e immagine verrà rimosso in una versione futura di SQL Server, quindi dovresti evitare di utilizzare questi tipi di dati nei nuovi lavori di sviluppo e pianificare di modificare le applicazioni che attualmente li utilizzano per utilizzare varchar(max) , nvarchar(max) o varbinary(max) invece.
Esempio 1 – Utilizzo di base
Ecco un esempio di impostazione di TEXTSIZE
valore.
SET TEXTSIZE 2048;
Ciò imposta TEXTSIZE
a 2048 byte.
Esempio 2:verifica del valore TEXTSIZE
Puoi controllare il TEXTSIZE
corrente valore con @@TEXTSIZE
:
SELECT @@TEXTSIZE AS [Text Size];
Risultato:
+-------------+ | Text Size | |-------------| | 2048 | +-------------+
Esempio 3:come influisce sui risultati della query
Ecco un esempio che dimostra come TEXTSIZE
value può influenzare i risultati restituiti in un SELECT
interrogazione.
Per prima cosa creiamo una tabella, inseriamo del testo, quindi selezioniamola.
USE Test; CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTest VALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' ); SELECT * FROM TextSizeTest;
Risultato (normale):
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Dragonfruit | Dragonfruit | +-------------+--------------+---------------+
Questo è ciò che normalmente ci aspetteremmo. Restituisce il testo completo all'interno di ogni colonna perché ogni riga di testo occupa meno di 2048 byte (che è ciò che ho impostato TEXTSIZE
nell'esempio precedente).
Ma ecco cosa succede se riduco TEXTSIZE
valore:
SET TEXTSIZE 4; SELECT * FROM TextSizeTest;
Risultato:
+-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Drag | Dr | +-------------+--------------+---------------+
La prima colonna non è interessata, perché non è una colonna "max". Quello che voglio dire è che è un varchar(50) e non varchar(max) . Il TEXTSIZE
opzione riguarda solo le colonne definite con max
.
La seconda colonna restituisce i primi quattro caratteri. Questo perché impostiamo il TEXTSIZE
valore a 4 e i primi quattro caratteri utilizzano 4 byte.
La terza colonna restituisce solo i primi 2 caratteri. Questo perché è un nvarchar colonna. In questo caso, i primi due caratteri utilizzano 4 byte.
Esempio 4 – Reimposta il valore
Una cosa da tenere presente è che specificando SET TEXTSIZE 0
in realtà lo "reimposta" sul valore predefinito di 4096.
SET TEXTSIZE 0; SELECT @@TEXTSIZE AS [@@TEXTSIZE]; SELECT * FROM TextSizeTest;
Risultato:
+--------------+ | @@TEXTSIZE | |--------------| | 4096 | +--------------+ (1 row affected) +-------------+--------------+---------------+ | varchar50 | varcharMax | nvarcharMax | |-------------+--------------+---------------| | Dragonfruit | Dragonfruit | Dragonfruit | +-------------+--------------+---------------+ (1 row affected)