是否可以在 sql 中按匹配某些模式的字段进行分组?
Posted
技术标签:
【中文标题】是否可以在 sql 中按匹配某些模式的字段进行分组?【英文标题】:Is it possible in sql to group by fields matching some pattern? 【发布时间】:2010-07-28 10:49:05 【问题描述】:SQL 中是否可以按LIKE
模式进行分组?我想实现这样的目标:
id|名称 1 |麦克风 2 |鲍勃 3 |账单 4 |爱丽丝
然后进行如下查询:SELECT name from users group by _pattern_
例如,我想通过匹配模式 'B*'、'*l*' 和 'Mike' 来获取组
会给出输出:
【问题讨论】:
【参考方案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'
【讨论】:
【参考方案2】:如果您希望同一条记录根据其匹配的模式多次出现,您应该使用多个带有相关过滤器的SELECT
语句和UNION
一起使用..
【讨论】:
【参考方案3】:您可以查询集合结构中的模式,然后使用 GROUP BY 或 DISTINCT 来删除重复数据,下面是 MSSQL CTE 的一种方式(临时表/表变量也可以);
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
【讨论】:
以上是关于是否可以在 sql 中按匹配某些模式的字段进行分组?的主要内容,如果未能解决你的问题,请参考以下文章
在 SQL/Impala 中按特定的分钟数对日期时间进行分组
分组值在 SQL (maria DB) 中按时间存储直到零,并与计数一起进行求和