在SQL Server中构建动态查询时,我遇到了一个相当奇怪的问题。我声明了一个NVARCHAR(MAX)类型的变量,并在其中构建一些查询,稍后使用sp_executesql运行它们。
这些查询中的一个或两个非常大,超过了4000个字符限制,据说NVARCHAR(MAX)可以克服。但是,我仍然遇到将整个查询存储在变量中的经典问题!
我阅读了在线文档,其中许多建议我们可以将最多2 GB的数据存储到NVARCHAR(MAX)变量中,但我不知道为什么它不会在变量中存储超过4000个字符。
任何帮助将不胜感激。
编辑 - 添加了示例代码
DECLARE @qry NVARCHAR(MAX);
SET @qry = N'SELECT * FROM Table1 t1' + N'INNER JOIN Table2 t2 ON t1.Col1 = t2.Col2' + N'INNER JOIN Table3 t3 ON t1.Col1 = t2.Col3'
EXEC sp_executeSQL @qry
上面只是一个包含较少字符的示例查询,我的实际查询构建包含大约6000个字符。