Nvarchar(max)在SQL Server中缩小到4000个字符

时间:2016-05-26 12:41:50

标签: sql sql-server

我在存储过程中创建了一个动态查询,当我尝试打印该动态查询时,它只打印整个查询的一部分。

保存整个动态查询的变量声明如下

DECLARE @SQL NVARCHAR(MAX)

当我打印变量的长度如下所示时,它给出了整个查询的长度,这很好。

PRINT LEN(@SQL)

但是,当我打印脚本本身时,它只打印整个查询的一部分。

PRINT @SQL

我也尝试打印它,如下所示

PRINT CONVERT(NVARCHAR(MAX),@SQL)

为什么它只打印4000张?我究竟做错了什么?

3 个答案:

答案 0 :(得分:7)

你没有做错任何事。 “打印”命令仅限于输出4000个字符(有关详细信息,请参阅BOL - 联机丛书)。这并不意味着nvarchar(max)缩小到4000个字符。

答案 1 :(得分:2)

PRINT限制为4000个字符,而不是NVARCHAR(MAX)变量。

如果你想输出所有内容,解决方法就是使用你的字符串这样的PRINT BIG函数。

https://www.richardswinbank.net/doku.php?id=tsql:print_big

您也可以选择不受限制的变量,并从结果中复制内容。

答案 2 :(得分:1)

尝试如下打印整个字符串,

SET @Query = 'SELECT ....' [Up To 4,000 characters, then rest of statement as below]

SET @Query = @Query + [rest of statement]

Now run your query as normal i.e. EXEC ( @Query )

从以下链接获得答案

nvarchar(max) still being truncated