日期:2014-05-18 浏览次数:20569 次
declare @v_value varchar(32) set @v_value ='''600600'',''600112''' declare @sql varchar(max) set @sql='select * from Show2003 where S1 in ('+@v_value +')' print @sql ---select * from Show2003 where S1 in ('600600','600112')
------解决方案--------------------
你传入的参数是一个字符串,建议你这样试试
select * from Show2003 where S1 charindex(S1,?)
------解决方案--------------------
在SQL SERVER 中 两个 '' 代表 一个 '
------解决方案--------------------
这种传递参数的方式,再传递到IN里面去实际上SQL是把整个参数当成一个string类型来处理的,所以不管你怎么写都相当于 IN ('ssssssssss.....'),不管里面什么格式。这种情况想达到效果,要不然拼接SQL执行,要不然用charindex
select * from show2003 where CHARINDEX(S1,?) > 0 --传参数就可以了
------解决方案--------------------
直接select * from tb where charindex(S1,?)>0啊,干嘛还需要去拼接?你传过来的参数就是这个问号