No SQL Server, o
SET TEXTSIZE
instrução especifica o tamanho de varchar(max) , nvarchar(max) , varbinary(max) , texto , ntext e imagem dados retornados por um SELECT
demonstração. A Microsoft informa que texto , ntext e imagem serão removidos em uma versão futura do SQL Server, portanto, evite usar esses tipos de dados em novos trabalhos de desenvolvimento e planeje modificar os aplicativos que os usam atualmente para usar varchar(max) , nvarchar(max) , ou varbinary(max) em vez de.
Exemplo 1 – Uso básico
Aqui está um exemplo de configuração de
TEXTSIZE
valor. SET TEXTSIZE 2048;
Isso define
TEXTSIZE
para 2048 bytes. Exemplo 2 – Verifique o valor TEXTSIZE
Você pode verificar o
TEXTSIZE
atual valor com @@TEXTSIZE
:SELECIONE @@TEXTSIZE AS [Tamanho do texto];
Resultado:
+-------------+| Tamanho do Texto ||-------------|| 2048 |+-------------+
Exemplo 3 – Como isso afeta os resultados da consulta
Aqui está um exemplo que demonstra como o
TEXTSIZE
valor pode afetar os resultados retornados em um SELECT
inquerir. Primeiro vamos criar uma tabela, inserir algum texto e depois selecioná-lo.
USE Test;CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SELECT * FROM TextSizeTest;
Resultado (normal):
+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Dragonfruit | Dragonfruit | Fruta-dragão |+-------------+--------------+---------------+
Isso é o que normalmente esperamos. Ele retorna o texto completo dentro de cada coluna porque cada linha de texto ocupa menos de 2048 bytes (que é o que eu configureiTEXTSIZE
para no exemplo anterior).
Mas eis o que acontece se eu reduzir oTEXTSIZE
valor:
SET TEXTSIZE 4;SELECT * FROM TextSizeTest;
Resultado:
+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Dragonfruit | Arraste | Dr |+-------------+--------------+---------------+
A primeira coluna não é afetada, porque não é uma coluna "máxima". O que quero dizer é que é um varchar(50) e não varchar(max) . OTEXTSIZE
A opção afeta apenas as colunas definidas commax
.
A segunda coluna retorna os primeiros quatro caracteres. Isso ocorre porque definimos oTEXTSIZE
valor para 4, e os primeiros quatro caracteres estão usando 4 bytes.
A terceira coluna retorna apenas os 2 primeiros caracteres. Isso ocorre porque é um nvarchar coluna. Nesse caso, os dois primeiros caracteres estão usando 4 bytes.
Exemplo 4 – Redefinir o valor
Uma coisa que você deve saber é que especificarSET TEXTSIZE 0
na verdade, “reinicia” para o valor padrão de 4096.
SET TEXTSIZE 0;SELECT @@TEXTSIZE AS [@@TEXTSIZE];SELECT * FROM TextSizeTest;
Resultado:
+--------------+| @@TEXTSIZE ||--------------|| 4096 |+--------------+(1 linha afetada)+-------------+------------ --+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Dragonfruit | Dragonfruit | Fruta-dragão |+-------------+--------------+---------------+(1 linha afetada)