IN和字符串结合使用的怪问题,急!
一个存储过程中需要将一个包含子查询结果的字符串嵌入IN中执行
declare @s varchar(50)
set @s = '888,889,890 ' --这里我直接赋值了,实际是从另一个查询语句得到的
select * from EmpNow_State where id in (@s)
报错:
服务器: 消息 245,级别 16,状态 1,行 3
将 varchar 值 '888,889,890 ' 转换为数据类型为 int 的列时发生语法错误。
------解决方案----------------------用动态SQL,如下:
declare @s varchar(50),@s2 varchar(8000)
set @s = '888,889,890 ' --这里我直接赋值了,实际是从另一个查询语句得到的
set @s2= 'select * from EmpNow_State where id in ( ' + @s + ') '
exec (@s2)