当我尝试执行时在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
答案 0 :(得分:4)
REPLICATE输出基于数据类型输入。所以这解释了sqlcmd。
如果字符串表达式不是varchar(max)或nvarchar(max)类型, REPLICATE截断返回值 在8,000字节。要返回值 大于8,000字节, 字符串表达式必须是显式的 施放到适当的大值 数据类型。
所以,请使用此SELECT REPLICATE(CONVERT(VARCHAR(MAX), 'a'), 9000)
SSMS从未显示所有文本数据(查询分析器也没有)
答案 1 :(得分:2)
答案 2 :(得分:0)
VARCHAR(MAX)只能容纳8000个字符
来自MSDN:
varchar [(n | max)] - 可变长度,非Unicode字符 数据。 n可以是1到1之间的值 8000。 max表示最大值 存储大小为2 ^ 31-1字节
正如Joseph(下文)所说,要保留更多内容,请使用text或ntext数据类型,但如果您希望能够搜索该类型,那么您需要启用某种形式的全文索引。