本文介紹了通過將逗號分隔列表與逗號分隔列表進行匹配來篩選行的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我有下表
Col1 Col2
1 ACA,ABS,PHR
2 PHR
3 MCM
4 ABC
現在我想從這里過濾數據,所以如果我有一個過濾器參數,比如'ABS,MCM'
,我只想獲得至少有一個匹配代碼的行。因此,在本例中,我應該得到過濾結果為
Col1 Col2
1 ACA,ABS,PHR
2 MCM
現在我可以使用查詢Select * from myTable where Col2 in ('ABS','MCM')
,但它不會檢索第一行ACA,ABS,PHR
。誰能告訴我如何對代碼進行文本搜索,以便只要一個代碼與Col2中的一個代碼匹配,我就可以獲得該行,這樣我就可以直接傳遞分隔列表,只要找到一個匹配的列表,就會檢索該行。
謝謝
推薦答案
您可以簡單地使用Like操作符,如下所示:
SELECT *
FROM mytable
WHERE Col2 LIKE '%ABS%' OR Col2 LIKE '%MCM%'
如果您希望接受逗號分隔值作為搜索輸入,則可以使用STRING_SPLIT()(從SQL Server 2016開始提供):
SELECT *
FROM mytable t
WHERE EXISTS (
SELECT 1
FROM (SELECT val FROM STRING_SPLIT('ABS, MCM', ',')) x
WHERE CONCAT(',', t.Col1, ',')
LIKE CONCAT('%,', x.val, ',%')
)
這篇關于通過將逗號分隔列表與逗號分隔列表進行匹配來篩選行的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,