存储过程里的字符串参数能不能转成sql语句来执行?

fmjwn 2004-09-09 11:34:03
参数 @strIDList 的值是"'0003','0001','0002','0004'"
存储过程里的调用:
select * from table where ID in (@strIDList)
结果不对。有好的方法吗?
...全文
117 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
效率应该都不会是很高,预计刘的会高一点.
zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
你测试一下吧,不好说.
fmjwn 2004-09-09
  • 打赏
  • 举报
回复
哪种比较快? zjcxc(邹建) 和 liuxiang_csdn(刘翔)的?
zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
--如果参数是按 "0003,0001,0002,0004" 传的

select * from table where charindex(','+ID+',' ,','+@strIDList+',')>0

zjcxc 元老 2004-09-09
  • 打赏
  • 举报
回复
select * from table where charindex(','''+ID+''',' ,','+@strIDList+',')>0
pbsql 2004-09-09
  • 打赏
  • 举报
回复
1、2楼已经是了
haoK 2004-09-09
  • 打赏
  • 举报
回复
2个办法:
1。如楼上,把参数值拼到sql串里
2。用like,charindex等判断在参数串里有没有特定的子串
fmjwn 2004-09-09
  • 打赏
  • 举报
回复
我想把@strIDList变成sql语句里的'0003','0001','0002','0004'
能不能变?
liuxiang_csdn 2004-09-09
  • 打赏
  • 举报
回复
declare @strIDList varchar(100)
set @strIDList ='''0003'',''0001'',''0002'',''0004'''
exec ('select * from table where ID in ('+@strIDList+')'
liuxiang_csdn 2004-09-09
  • 打赏
  • 举报
回复
exec ('select * from table where ID in ('+@strIDList+')'

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧