我有一个应用程序将数据传递给名为@inputvar
的sql变量。应用程序将数据作为字符串传递。存储过程将变量@inputvar
声明为varchar
。问题是,数据的格式为'12,13,15'
。由于存储过程中的where子句,我收到错误消息conversion failed when converting the varchar value to datatype int
原因是:
select *
from table
where ID in (@inputvar)
我尝试剥离引号:replace(@inputvar,'''','')
我尝试将变量转换为int:cast(@inputvar as int)
,但两次尝试均失败
答案 0 :(得分:0)
有多种方法可以解决这个问题;您可以使用动态查询来处理您的场景
DECLARE @inputvar varchar(10)
DECLARE @sql NVARCHAR(1000)
set @inputvar = '12,13,15'
set @sql = 'select * from table where ID in (' + REPLACE(@inputvar, '''','') + ')'
EXEC @sql