Seriously - VARCHAR(MAX)
can store up to 2 GB of data - not just 8000 characters.....
Try this:
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)
This will return a value higher than 8000 characters after 1000 iterations.
The point is: if you're using varchar(max)
, you need to make sure to always cast all your strings to varchar(max)
explicitly - as I did in this example. Otherwise, SQL Server will fall back to "regular" varchar
processing, and that's indeed limited to 8000 characters....
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…