Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como armazenar uma string var maior que varchar (max)?


Sério - VARCHAR(MAX) pode armazenar até 2 GB de dados - não apenas 8000 caracteres.....

Tente isto:
DECLARE @myVar VARCHAR(MAX) = ''

DECLARE @ix INT = 1

WHILE @ix < 1000
BEGIN
    set @myVar = @myVar + CAST('bla bla bla' AS VARCHAR(MAX))
    SET @ix = @ix + 1
END

SELECT DATALENGTH(@myvar)

Isso retornará um valor maior de 8.000 caracteres após 1.000 iterações.

O ponto é:se você estiver usando varchar(max) , você precisa sempre transmitir todas as suas strings para varchar(max) explicitamente - como fiz neste exemplo. Caso contrário, o SQL Server retornará ao varchar "regular" processamento, e isso é realmente limitado a 8000 caracteres....