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

Edu*_*rdo 14 sql varchar sql-server-2005 string-concatenation max

我正在尝试这样做:

DECLARE @myVar VARCHAR(MAX)
Loop with cursor
select @myVar = @myVar + bla bla bla
end loop
Run Code Online (Sandbox Code Playgroud)

循环结束时,@ myVar不完整,只包含8000个字符.

我曾尝试使用文本,但不允许使用本地变量.

对这个案子有什么好处?

xml var?

我刚看过这篇文章:

如何在SQL Server 2000中传递大于varchar(8000)的字符串参数?

检查连接到varchar(max)是否超出最大允许字符数

还有其他人通过网络.

问候.

mar*_*c_s 31

严重 - 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)
Run Code Online (Sandbox Code Playgroud)

这将在1000次迭代后返回高于 8000个字符的值.

关键是:如果你正在使用varchar(max),你需要确保始终所有字符串强制转换varchar(max)- 就像我在这个例子中所做的那样.否则,SQL Server将回退到"常规" varchar处理,而且确实限制为8000个字符....

  • @Murphy:像SQL Server Mgmt Studio这样的UI工具对它们显示的数量有限制 - 是的,这是正常的. (5认同)
  • @A.Rashad:`varchar(max)` 最多可存储 2 GB**(或 **20 亿**)字符。但是众所周知,Management Studio 具有远低于该限制的某些限制 - 这实际上取决于您尝试插入该数据的*方式*..... (3认同)