将varchar值'SELECT'转换为数据类型int时转换失败

Swa*_*thi 3 sql-server-2008

我有这个问题:

DECLARE @selectsql nvarchar(4000),
DECLARE @cnt int

select @selectsql = ' SELECT ' + @cnt + '= COUNT(*) FROM Vwbckup' 

print @selectsql
print @cnt

EXEC sp_executesql @selectsql
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,我收到此错误:

将varchar值'SELECT'转换为数据类型int时转换失败.

mar*_*c_s 6

您的@cnt变量是INT类型 - 您需要将其强制转换为NVARCHAR以连接在一起:

DECLARE @selectsql nvarchar(4000),
DECLARE @cnt int

SELECT @selectsql = N' SELECT ' + CAST(@cnt AS NVARCHAR(10)) + N'= COUNT(*) FROM Vwbckup' 
Run Code Online (Sandbox Code Playgroud)

另外:您应该在字符串文字前添加前缀N以指示Unicode(NVARCHAR)字符串

更新:上一个命令根本没有任何意义....你的意思是创建这个命令字符串吗?

SELECT @selectsql = N' SELECT @cnt = COUNT(*) FROM Vwbckup' 
Run Code Online (Sandbox Code Playgroud)

然后执行它?