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 configureiTEXTSIZEpara no exemplo anterior).
Mas eis o que acontece se eu reduzir oTEXTSIZEvalor:
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) . OTEXTSIZEA opção afeta apenas as colunas definidas commax.
A segunda coluna retorna os primeiros quatro caracteres. Isso ocorre porque definimos oTEXTSIZEvalor 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 0na 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)