如何存储大于varchar(max)的字符串var?

时间:2012-08-23 18:11:03

标签: sql sql-server-2005 max varchar string-concatenation

我正在尝试这样做:

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

其他人通过网络。

问候。

1 个答案:

答案 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个字符....