2009-12-04 46 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

這很好,沒有意識到這一點。 –