是否有可能在sql中按匹配某些模式的字段进行分组?

时间:2010-07-28 10:49:05

标签: sql sql-like

在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

3 个答案:

答案 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