【发布时间】:2014-10-30 14:23:37
【问题描述】:
我的代码出现以下错误:
转换 varchar 值时转换失败 '(CASE WHEN ROW_NUM = ' 到数据类型 int。
我做错了什么?
DECLARE @N INT = 6,
@I INT = 0,
@SQL NVARCHAR(MAX)
BEGIN
SET @SQL = '(CASE WHEN ROW_NUM = '+@I+'THEN problem ELSE NULL END) ';
SET @I = @I+1;
END
EXEC SP_EXECUTESQL
@SQL
【问题讨论】:
-
THEN 之前肯定少了一个空格。
-
你需要在你的字符串连接中做
CAST(@I AS VARCHAR(12))。 -
我将代码更改为以下 DECLARE @N INT = 6, I INT = 0, SQL NVARCHAR(MAX) BEGIN SET SQL = '(CASE WHEN ROW_NUM = '+CAST(@I AS VARCHAR (12))+'THEN DX_NAME ELSE NULL END)';设置我 = @I+1; END EXEC SP_EXECUTESQL SQL 并出现以下错误“消息 156,级别 15,状态 1,第 1 行关键字'CASE'附近的语法不正确。”
-
@vdohnal 我在 THEN 之前添加了空格但同样的错误......
-
@Var 请用新代码编辑问题。
标签: sql sql-server tsql int varchar