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)