日期:2014-05-18  浏览次数:20371 次

sql in 的问题
小弟今碰到一个问题
create aa
@id varchar(200)

as
select * from table where id in (@id)
go


@id 是在程序里拼接好的字符串
string id ="'12345678','7654321','abcdefg'"

执行不会报任何错误,也就是说是允许这么传的,但却什么都查不出来

直接用查询分析器 
select * from table where id in ('12345678','7654321','abcdefg')是有数据的

版本:sqlserver 2008

请各位大大尽量想办法用 aa这个存储过程解决问题

------解决方案--------------------
SQL code
create proc aa
@id varchar(200)

as
declare @sql varchar(max)
set @sql = '
select * from table where id in (' + replace(@id,'''','''''') + ')'
exec(@sql)

go

------解决方案--------------------
参数传进去的时候好像要用两个分号,就是''xx''这样。也可以使用1楼的方法