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

Ari*_*MAZ 1 sql sql-server

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

我的变量包含整个动态查询,如下所示

DECLARE @SQL NVARCHAR(MAX)
Run Code Online (Sandbox Code Playgroud)

当我像下面那样打印变量的长度时,它给出了整个查询的长度,这很好.

PRINT LEN(@SQL)
Run Code Online (Sandbox Code Playgroud)

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

PRINT @SQL
Run Code Online (Sandbox Code Playgroud)

我也尝试打印它如下

PRINT CONVERT(NVARCHAR(MAX),@SQL)
Run Code Online (Sandbox Code Playgroud)

为什么它只打印第一个4000chars?我究竟做错了什么?

Ran*_*der 7

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