MySQL GROUP от Regex? - PullRequest
       2

MySQL GROUP от Regex?

9 голосов
/ 25 ноября 2011

У меня следующий запрос

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

Есть ли другой способ добиться этого?

Ответы [ 3 ]

10 голосов
/ 25 ноября 2011

Возможно, вам не понадобится регулярное выражение, только строковые операции.Для трех символов:

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
4 голосов
/ 25 ноября 2011
select
substring(substring_index(col1,'-',-1),1,3) as grp,
count(*) as total
from table
group by grp
1 голос
/ 25 ноября 2011

Это должно делать то, что вы хотите.

SELECT Count(*) as Total_Count, SUBSTRING(Col1, 1, 3)
FROM Table1 
GROUP BY SUBSTRING(Col1, 1, 3) 
ORDER BY Total_Count DESC;
...