我正在尝试这样做:
DECLARE @myVar VARCHAR(MAX)
Loop with cursor
select @myVar = @myVar + bla bla bla
end loop
循环结束时,@myVar不完整,仅包含8000个字符。
我尝试过使用文本,但不允许使用本地变量。
对于这种情况,什么是好的解决方案?
xml变量?
我刚刚看了这些帖子:
如何在SQLServer2000中传递大于varchar(8000)的字符串参数?
检查连接到varchar(max)是否会超出允许的最大字符数
以及其他通过网络。
谨致问候。
说真的,VARCHAR(MAX)
最多可以存储2GB的数据,而不仅仅是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个字符。。。。