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