GROUP BY基于String值

时间:2016-05-20 19:37:51

标签: mysql sql

我有一个像这样的语言环境字段的表:

Id, locale
1, "en-US"
2, "en-BR"
3, "en-SK"
4, "fr-FR"
5, "fr-FS"

我想在这个表上做一个select,并根据“en”或“fr”(区域设置字段字符串的一部分)进行分组,我应该写什么来完成这个?

4 个答案:

答案 0 :(得分:1)

您可以使用substringinstr的组合。

select substring(locale,1,instr(locale,'-')-1), count(*)
from tablename
group by substring(locale,1,instr(locale,'-')-1)

答案 1 :(得分:1)

您可以按子串函数结果

进行分组
SELECT SUBSTR(locale,1,2) FROM table GROUP BY SUBSTR(locale,1,2)

答案 2 :(得分:1)

或者,您也可以使用LEFT()函数

SELECT left(locale, 2), count(id) FROM table group by left(locale, 2)

在一天结束时,重要的部分是使用包含函数的group by语句。

请注意,这在MySQL中很有效。其他DBMS可能不喜欢这个。

答案 3 :(得分:0)

我会使用substring_index()

Select substring_index(locale, '-', 1) as grp, count(*)
From t
Group by grp

这是简单而通用的,意思是在第一个分隔符之前获取所有字符。