2

在 SSMS 中,当我尝试执行时:

SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))    

我只看到显示的前 8000 个字符。设置工具>>选项>>查询结果>>Sql Server>>结果到网格设置为65534,结果到文本设置为8192。

另外,当我尝试从SQLCMD运行它时

sqlcmd -S Server -E -y 0 -Q "SELECT CONVERT(VARCHAR(MAX), REPLICATE('a',9000))" -o out.txt

我只看到 8000 个字符。

标志-y 0应该将其设置为 1 MB。但是我不超过8000个字符。

可能是什么问题呢?

谢谢,
_UB

4

3 回答 3

4

REPLICATE输出基于数据类型输入。所以这解释了sqlcmd。

如果字符串表达式的类型不是 varchar(max) 或 nvarchar(max),则 REPLICATE 将返回值截断为 8,000 字节。要返回大于 8,000 字节的值,必须将字符串表达式显式转换为适当的大值数据类型。

所以,用这个SELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)

SSMS 从未显示所有文本数据(查询分析器也没有)

于 2009-09-01T20:04:19.517 回答
2

看这里 :

http://www.sqlservercentral.com/articles/varchar(max)/67057/

于 2009-09-01T19:56:59.110 回答
0

VARCHAR(MAX) 只能容纳 8000 个字符

看这里

来自 MSDN:

varchar [ ( n | max ) ] - 可变长度、非 Unicode 字符数据。n 可以是 1 到 8,000 之间的值。max 表示最大存储大小为 2^31-1 字节

正如约瑟夫(下)所说,要保存更多,请使用 text 或 ntext 数据类型,但如果您希望能够搜索它,那么您需要启用某种形式的全文索引。

更好的链接

于 2009-09-01T19:53:11.737 回答