Сериозно - VARCHAR(MAX)
може да съхранява до 2 GB данни - не само 8000 знака.....
Опитайте това:
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)
Това ще върне стойност по-висока от 8000 знака след 1000 повторения.
Въпросът е:ако използвате varchar(max)
, трябва да се уверите, че винаги каствате всичките ви низове към varchar(max)
изрично - както направих в този пример. В противен случай SQL Server ще се върне към "обикновен" varchar
обработка и това наистина е ограничено до 8000 знака....