我如何在使用参数有关多张值“其中”查询:用途,其中在与帕拉姆
Select [..] where str in ('AB','BC')
当然,这不会允许有多个值:
Select [..] where str in (@param)
我如何在使用参数有关多张值“其中”查询:用途,其中在与帕拉姆
Select [..] where str in ('AB','BC')
当然,这不会允许有多个值:
Select [..] where str in (@param)
你需要将每个参数添加为IN子句中的值,例如或者,您可以手动创建查询并执行它(虽然这也充满了危险)。
编辑︰所以,只是为了澄清,因为你收到一串逗号分隔的值,然后你想要在IN子句中使用,你需要做一些建议,并将你的字符串分成一个表格,然后你可以在该条款中使用。
使用提到你可以做以下的links astander之一:
select [...]
where str in (select items from dbo.split(@ItemString))
(其中以逗号分隔值在@ItemString)。
“你不能用一句像充满激情的话来争辩!” Tigger –
我认为OP可能希望params在单个参数中,例如@param ='''AB'',''BC''' –
除非列中包含精确值(它不应该“ T)。 –
以增加每个值作为单独PARAM的选择,如果您使用的是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
这很好,没有意识到这一点。 –
查看http://www.sommarskog.se/arrays-in-sql-2005.html,了解许多可能的拆分功能的分析。很长,但非常值得一读。 –
您正在使用哪个版本的SQL Server? – AdaTheDev