【发布时间】:2016-09-24 11:27:42
【问题描述】:
我正在存储过程中创建一个动态查询,当我尝试打印该动态查询时,它只打印整个查询的一部分。
保存整个动态查询的变量声明如下
DECLARE @SQL NVARCHAR(MAX)
当我像下面这样打印变量的长度时,它给出了整个查询的长度,这很好。
PRINT LEN(@SQL)
但是,当我打印脚本本身时,它只打印整个查询的一部分。
PRINT @SQL
我也尝试像下面这样打印它
PRINT CONVERT(NVARCHAR(MAX),@SQL)
为什么它只打印前 4000 个字符?我究竟做错了什么?
【问题讨论】:
-
为什么不阅读文档? msdn.microsoft.com/en-us/library/ms176047.aspx 消息字符串如果是非 Unicode 字符串,最长可达 8,000 个字符,如果是 Unicode 字符串,最长可达 4,000 个字符。较长的字符串被截断。 varchar(max) 和 nvarchar(max) 数据类型被截断为不大于 varchar(8000) 和 nvarchar(4000) 的数据类型。
-
@VladimirBaranov,但我的字符串大约 15.000 个字符,
-
您的数据没有被缩小/截断。 SSMS 对某些字段显示的字符数有限制。使用另一个应用程序来解释
SELECT查询结果将产生该字段的完整值。 -
Why it only prints first 4000chars?因为PRINT是这样工作的,文档里写得很清楚。
标签: sql sql-server