【发布时间】:2013-01-27 12:20:12
【问题描述】:
我有一个很长的内联查询,即使我将 nvarchar 属性设置为 MAX,文本也会被截断。有什么方法可以让 sp_executesql 改为使用 varchar。
当我尝试将 nvarchar 更改为 varchar 时,出现错误,我也尝试过 ntext,但结果相同。
编辑:
根据我在答案上发布的问题所读到的内容,这应该可行,但没有人能告诉我为什么?
Declare @X varchar(MAX)
SET @X = N'Select * From Users'
Execute sp_executesql @X
虽然这没有问题:
Execute sp_executesql N'Select * From Users'
【问题讨论】:
-
@X必须是nvarchar(max)。喜欢这个Declare @X nvarchar(MAX)。 -
这个想法是把'N'放在语句应该使它工作之前,如果它是varchar,这就是我理解的事件。
-
不。如果你使用一个变量,它必须是
nvarchar。可以使用@X = cast('' as nvarchar(max)) + N'select ' + etc修复您的连接问题(截断)。对空字符串的第一次强制转换确保连接的字符串是max。 -
为什么真的是反对票?
标签: sql-server-2008