是否有任何解决方案/替代方案可以在动态SQL时切断问题

是否有任何解决方案/替代方案可以在动态SQL时切断问题,sql,sql-server-2008,dynamic,dynamic-sql,Sql,Sql Server 2008,Dynamic,Dynamic Sql,我正在使用动态查询进行数据透视。我的数据透视表将有250多列,超过8000个字符。我们有别的选择吗?我正在使用SQL2008 这就是我编写SQL代码的方式。(不是确切的SQL,但足以说明我正在努力实现的目标。) 谢谢我想您担心的是存储在变量中的字符串,因为它超过了8000个字符的长度,对吗 然后试试这个: declare @string nvarchar(max); 看到了吗,这在我这边奏效了: DECLARE @String nvarchar(max); SELECT @String = R

我正在使用动态查询进行数据透视。我的数据透视表将有250多列,超过8000个字符。我们有别的选择吗?我正在使用SQL2008

这就是我编写SQL代码的方式。(不是确切的SQL,但足以说明我正在努力实现的目标。)


谢谢

我想您担心的是存储在变量中的字符串,因为它超过了8000个字符的长度,对吗

然后试试这个:

declare @string nvarchar(max);
看到了吗,这在我这边奏效了:

DECLARE @String nvarchar(max);
SELECT @String = REPLICATE(CAST('a' AS NVARCHAR(MAX)),100000);
SELECT LEN(@String)

您使用的print语句最多只能容纳8000个字符,这就是print显示不完整查询的原因,因此当您执行时,您将在使用NVARCHAR(max)后得到正确的答案。

您好,是的,我说得对。我使用了NVARCHAR,但结果是一样的。甚至Print@SQL现在也显示了完整的语句。它被切断了。还有什么建议吗?你有没有试着把它声明为NVARCHAR(MAX)?看我的答案是的,你也试过了。它给了我同样的结果。Nithin,尝试在EXEC语句中使用It,并尝试删除LEN函数。您好,谢谢您的回复。我在执行时遇到了相同的错误。我正在使用变量as:DECLARE@SQL-NVARCHAR(MAX)并作为EXEC(@SQL)执行它不仅@SQL-query,还需要将变量数据类型更新为NVARCHAR(MAX),在其中填充250多个列。我也尝试过,但没有成功。我希望能向您展示SQL语句。我正在尝试在此处发布实际查询,但变量的“@”字符不允许我发布。请查看链接,了解我是如何构建查询的。您尝试这样做的事实通常是代码气味的症状。如果你发布另一个问题,可能会有一个更好的解决方案-250列可能太宽,无法很好地阅读,如果这是常见的,你可能想让它成为一个视图无论如何。。。