我试着这样做:
DECLARE @myVar VARCHAR(MAX)
Loop with cursor
select @myVar = @myVar + bla bla bla
end loop
当循环结束,@myvar是不完整的,只包含8000个字符。
我已经tryed使用文字,但不允许本地变量。
这将是一个很好的解决了这个案子?
XML是?
我刚才看了这个帖子:
我如何通过一个字符串参数比在SQL Server 2000为varchar(8000)更大?
检查是否串联为varchar(最大值)将超越最大允许的字符
等人通过网络。
问候。
认真- 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)
这将在1000个迭代返回一个值大于 8000个字符。
问题的关键是:如果你使用varchar(max)
,您需要确保您的所有字符串总是转换为varchar(max)
明确-因为我在这个例子中那样。 否则,SQL Server将回落到“正规军” varchar
处理,而这确实是限于8000个字符....