通过正则表达式的MySQL组?
我有以下疑问通过正则表达式的MySQL组?,mysql,regex,database,group-by,Mysql,Regex,Database,Group By,我有以下疑问 SELECT Count(*) as Total_Count, Col1 FROM Table1 GROUP BY Col1 ORDER BY Total_Count DESC; 我想放大Col1。Col1中的数据采用以下格式: text-abc1 txt4-abcde22 tex6-abc2 text4-imp4 text-efg1 txt-efg43 我希望能够将其分组 After the first `-`, any first three/four/five ch
SELECT Count(*) as Total_Count, Col1
FROM Table1
GROUP BY Col1
ORDER BY Total_Count DESC;
我想放大Col1。Col1中的数据采用以下格式:
text-abc1
txt4-abcde22
tex6-abc2
text4-imp4
text-efg1
txt-efg43
我希望能够将其分组
After the first `-`, any first three/four/five characters match
在本例中,如果我们匹配前3个字符。输出将是:
Total_Count Col1
3 abc
1 imp
2 efg
要实现这一点,还有其他方法吗?您可能不需要正则表达式,只需要字符串操作。对于三个字符:
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
这应该是你想要的
SELECT Count(*) as Total_Count, SUBSTRING(Col1, 1, 3)
FROM Table1
GROUP BY SUBSTRING(Col1, 1, 3)
ORDER BY Total_Count DESC;
子字符串(Col1,1,3)
在这种情况下不起作用,因为我需要匹配-
后面的字符。在-
之前可以有任意数量的字符。我误解了你的问题-我以为你想要前3个。伊恩的答案比我的好这是正确的答案。谢谢你。但是abcd-1234
需要是Col1
。请把它改一下,这样我就可以接受:)@daking963,就好像当一件事拼写不同时,这个答案对你没有帮助一样?挑剔,挑剔!:-p@Wiseguy这不是吹毛求疵。这是为了确保答案的正确性,并为其他人提供未来的参考。我相信他们会明白,应该是列名而不是字符串。这只是一个打字错误,伊恩可以很容易地修改。为了提高网站的整体质量,在我看来,这些小事很重要!完成:)抱歉,这是我的shell测试样本数据
select
substring(substring_index(col1,'-',-1),1,3) as grp,
count(*) as total
from table
group by grp