Você usou
SET TEXTSIZE
para limitar os dados retornados por uma consulta, mas descobriu que simplesmente não funciona? Você está descobrindo que seu SELECT
as consultas continuam a retornar a quantidade total de texto, independentemente do TEXTSIZE
valor? Leia. Você pode estar cometendo um erro óbvio.
Quando encontrei pela primeira vez o
TEXTSIZE
opção, decidi fazer um teste rápido. Mas não funcionou. Eu tentei várias vezes com vários TEXTSIZE
valores, mas nada parecia funcionar. “Por que não está funcionando?” Eu me perguntei.
Mas então clicou. Reli a documentação e percebi que não estava usando o tamanho de string correto para meus tipos de dados.
O
TEXTSIZE
só funciona nos seguintes tipos de dados:- varchar(max)
- nvarchar(max)
- varbinary(max)
- texto
- ntexto
- imagem
Se você observar os três primeiros, observe que eles usam
max
para o argumento. Isso significa que eles usam o tamanho máximo de string/armazenamento. Eu estava testando em colunas do tipo nvarchar(100) , varchar(255) , etc. Não é de admirar que não estivesse funcionando.
Exemplo
Aqui está um exemplo para demonstrar o que quero dizer.
Teste de USO; DROP TABLE SE EXISTE TextSizeTest;CREATE TABLE TextSizeTest ( varchar50 varchar(50), varcharMax varchar(max), nvarcharMax nvarchar(max) ); INSERT INTO TextSizeTestVALUES ( 'Dragonfruit', 'Dragonfruit', 'Dragonfruit' );SET TEXTSIZE 4;SELECT * FROM TextSizeTest;
Resultado:
+-------------+--------------+---------------+| varchar50 | varcharMax | nvarcharMax ||-------------+-------------+---------------|| Dragonfruit | Arraste | Dr |+-------------+--------------+---------------+
Aqui, defino oTEXTSIZE
valor para4
, mas o texto completo dovarchar(50)
coluna permanece intacta. Esta coluna não é afetada porSET TEXTSIZE
. E é exatamente assim que deve funcionar.
São apenas as outras duas colunas que são afetadas, porque sãovarchar(max)
envarchar(max)
respectivamente.
Além disso, o motivo do nvarchar coluna é menor que o varchar é porque ele usa dois bytes para cada caractere (em comparação com varchar é um byte por caractere).
Então, se você está tendo problemas comSET TEXTSIZE
, verifique seu tipo de dados.