读书人

IN和字符串结合使用的怪有关问题

发布时间: 2012-02-12 17:16:33 作者: rapoo

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)

读书人网 >SQL Server

热点推荐