我正在尝试这样做:
DECLARE @myVar VARCHAR(MAX)
Loop with cursor
select @myVar = @myVar + bla bla bla
end loop
当循环结束时,@ myVar不完整,只包含8000个字符。
我尝试过使用文字,但不允许使用本地视频。
这个案例有什么好办法?
xml var?
我刚看了这篇文章:
How do I pass a string parameter greater than varchar(8000) in SQL Server 2000?
Check if concatenating to a varchar(max) will go beyond max allowable characters
其他人通过网络。
问候。
答案 0 :(得分:30)
严重 - 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个字符....