通过将逗号分隔列表与逗号分隔列表进行匹配来筛选行 [英] Filter rows by matching comma separated list against comma separated list

查看:0
本文介绍了通过将逗号分隔列表与逗号分隔列表进行匹配来筛选行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下表

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, ',%')
)

这篇关于通过将逗号分隔列表与逗号分隔列表进行匹配来筛选行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆