我如何在使用參數有關多張值「其中」查詢:用途,其中在與帕拉姆
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