Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment stocker une chaîne var supérieure à varchar(max) ?

Sérieusement - VARCHAR(MAX) peut stocker jusqu'à 2 Go de données - pas seulement 8000 caractères .....

Essayez ceci :

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)

Cela renverra une valeur supérieure plus de 8000 caractères après 1000 itérations.

Le fait est :si vous utilisez varchar(max) , vous devez vous assurer de toujours caster toutes vos chaînes à varchar(max) explicitement - comme je l'ai fait dans cet exemple. Sinon, SQL Server reviendra à varchar "normal" traitement, et c'est en effet limité à 8000 caractères....