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....