SQL 参数化,其中参数个数不定

lvbinandylau 2010-03-16 06:15:35

SELECT * FROM RSPU
WHERE RSPU.ProductUnit IN ('SC', 'DP', ...)


我能够将IN里面的这些条件参数化吗? IN里面的参数个数是不定的.
或者有没有什么别的方法实现这种情况.

先谢谢了.
...全文
261 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvbinandylau 2010-03-16
  • 打赏
  • 举报
回复
原来得放在EXEC里面才行
嘿嘿,结贴.
回头再看看EXEC.
feixianxxx 2010-03-16
  • 打赏
  • 举报
回复
str = '''SC'', ''DP'', ''SSM'''
lvbinandylau 2010-03-16
  • 打赏
  • 举报
回复
貌似不行.
比如我现在S1='DP', S2='SC', S3='SSM'
这要传到IN里面的str要怎么拼接?
str = ''SC', 'DP', 'SSM''吗?
都是单引号吗?但是我这边执行会出错。
Incorrect syntax near 'SC'
还有,这('+@str+'),这+号什么意思,网上搜不到这个。
lvbinandylau 2010-03-16
  • 打赏
  • 举报
回复
大家观点都这么一致...
我先试试看.
先谢谢了
黄_瓜 2010-03-16
  • 打赏
  • 举报
回复
declare @str varchar(100)
set @s=''SC', 'DP', 'SSM''
exec('SELECT * FROM RSPU WHERE RSPU.ProductUnit IN('+@s+')')
-狙击手- 2010-03-16
  • 打赏
  • 举报
回复
SELECT * FROM RSPU
WHERE RSPU.ProductUnit IN ('SC', 'DP', 'SSM')

---


set @in = '''SC'', ''DP'', ''SSM'''
exec('SELECT * FROM RSPU
WHERE RSPU.ProductUnit IN ('+@in+')')

feixianxxx 2010-03-16
  • 打赏
  • 举报
回复
加入你的那个参数里的数据是可以通过代码拼接的
那你拼接成一个字符串作为变量@s
然后动态执行 。。。
declare @str varchar(8000)
set @str=
'SELECT * FROM RSPU
WHERE RSPU.ProductUnit IN('+@s+')'

exec(@str)
-狙击手- 2010-03-16
  • 打赏
  • 举报
回复
exec('select * from ta where col in('+@in+')')
lvbinandylau 2010-03-16
  • 打赏
  • 举报
回复
但是IN里面的这些字符串个数不定的,比如下一次就是这样

SELECT * FROM RSPU
WHERE RSPU.ProductUnit IN ('SC', 'DP', 'SSM')

我实在不知道怎么能够用一个参数来对应这多出来的字符串。
rucypli 2010-03-16
  • 打赏
  • 举报
回复
让in里面的变成一个参数

34,594

社区成员

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

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