在SQL中是否可以按LIKE
模式进行分组?我想实现这样的目标:
id|name 1 | Mike 2 | Bob 3 | Bill 4 | Alice
然后执行以下查询:SELECT name from users group by _pattern_
例如,我希望通过匹配模式'B *','* l *'和'Mike'来获得组合
会给出输出:
B* | Bob | Bill *l* | Bill | Alice Mike| Mike
答案 0 :(得分:1)
Select 'B*' as Mask, Name
from Table
WHERE Name like 'B%'
UNION ALL
Select '*l*' as Mask, Name
from Table
WHERE Name like '%l%'
UNION ALL
Select 'Mike' as Mask, Name
from Table
WHERE Name like 'Mike'
答案 1 :(得分:0)
如果您希望根据匹配的模式多次显示相同的记录,则应使用多个SELECT
语句及相关过滤器并将UNION
组合在一起..
答案 2 :(得分:0)
您可以查询集结构中的模式然后GROUP BY或DISTINCT来删除重复,下面是一种使用MSSQL CTE的方法(临时表/表var也可以工作);
with match (pattern) as (
select 'B%'
union select '%l%'
union select 'Mike'
)
select
pattern,
name
from TABLE, match where TABLE.name like match.pattern
group by pattern, name
==
%l% Alice
%l% Bill
B% Bill
B% Bob
Mike Mike