我有一个像这样的语言环境字段的表:
Id, locale
1, "en-US"
2, "en-BR"
3, "en-SK"
4, "fr-FR"
5, "fr-FS"
我想在这个表上做一个select,并根据“en”或“fr”(区域设置字段字符串的一部分)进行分组,我应该写什么来完成这个?
答案 0 :(得分:1)
您可以使用substring
和instr
的组合。
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
这是简单而通用的,意思是在第一个分隔符之前获取所有字符。