2009-12-04 48 views

回答

1

你需要将每个参数添加为IN子句中的值,例如或者,您可以手动创建查询并执行它(虽然这也充满了危险)。

编辑︰所以,只是为了澄清,因为你收到一串逗号分隔的值,然后你想要在IN子句中使用,你需要做一些建议,并将你的字符串分成一个表格,然后你可以在该条款中使用。

使用提到你可以做以下的links astander之一:

select [...] 
where str in (select items from dbo.split(@ItemString)) 

(其中以逗号分隔值在@ItemString)。

+0

“你不能用一句像充满激情的话来争辩!” Tigger –

+0

我认为OP可能希望params在单个参数中,例如@param ='''AB'',''BC''' –

+1

除非列中包含精确值(它不应该“ T)。 –

3

以增加每个值作为单独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 
+0

这很好,没有意识到这一点。 –