首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL GROUP by Regex?

MySQL GROUP by Regex?
EN

Stack Overflow用户
提问于 2011-11-26 03:20:14
回答 4查看 13.1K关注 0票数 16

我有以下查询

代码语言:javascript
运行
复制
SELECT Count(*) as Total_Count, Col1 
FROM Table1 
GROUP BY Col1 
ORDER BY Total_Count DESC;

我想放大Col1。Col1中的数据格式如下:

代码语言:javascript
运行
复制
text-abc1
txt4-abcde22
tex6-abc2
text4-imp4
text-efg1
txt-efg43

我希望能够对其进行分组

代码语言:javascript
运行
复制
After the first `-`, any first three/four/five characters match

在这个例子中,如果我们匹配前3个字符。输出将为:

代码语言:javascript
运行
复制
Total_Count   Col1
3             abc
1             imp
2             efg

有没有其他方法可以做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-26 03:36:19

您可能不需要正则表达式,只需要字符串操作。对于三个字符:

代码语言:javascript
运行
复制
SELECT count(*) AS Total_Count,
SUBSTRING(Col1 FROM POSITION('-' in Col1)+1 FOR 3) AS Col1_zoomed
FROM Table1
GROUP BY Col1_zoomed
ORDER BY Total_Count DESC
票数 15
EN

Stack Overflow用户

发布于 2011-11-26 03:49:45

代码语言:javascript
运行
复制
select
substring(substring_index(col1,'-',-1),1,3) as grp,
count(*) as total
from table
group by grp
票数 4
EN

Stack Overflow用户

发布于 2011-11-26 03:37:18

这应该可以做你想要的事情。

代码语言:javascript
运行
复制
SELECT Count(*) as Total_Count, SUBSTRING(Col1, 1, 3)
FROM Table1 
GROUP BY SUBSTRING(Col1, 1, 3) 
ORDER BY Total_Count DESC;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8273405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档