如何在“where in”查询中为多个值使用param:
Select [..] where str in ('AB','BC')
当然,这不允许多个值:
Select [..] where str in (@param)
答案 0 :(得分:3)
如果您使用的是SQL Server 2008,则将每个值添加为单独的参数的替代方法是传入table valued parameter,这样您就可以执行以下操作:
SELECT...
FROM YourTable t
JOIN @TableParam p ON t.str = p.str
如果您没有使用SQL 2008,并且您实际上想要将所有值作为一个CSV字符串传递,那么另一种常见方法是使用用户定义的函数将CSV字符串拆分出来并返回一个TABLE然后可以加入,例如
SELECT ....
FROM YourTable t
JOIN dbo.fnSplit(@param) s ON t.str = s.str
答案 1 :(得分:1)
您需要将每个参数添加为IN子句中的值,例如
where str in (@param1, @param2, @param3)
或者,你可以手动创建一个查询并执行它(虽然这也充满了危险)。
编辑:所以,只是为了澄清一下,因为你收到一串逗号分隔的值然后你想在IN子句中使用,你需要做一些astander建议并将你的字符串拆分成一个表然后你可以在条款中使用它。
使用提到的links旁观者之一,您可以执行以下操作:
select [...]
where str in (select items from dbo.split(@ItemString))
(逗号分隔的值在@ItemString中)。
答案 2 :(得分:1)