解法1 note:这个方法简单,但过于取巧。

SELECT
'male' as gender,
COUNT(*) as number
FROM user_submit
WHERE profile REGEXP ',male'
UNION ALL
SELECT
'female',
COUNT(*)
FROM user_submit
WHERE profile REGEXP ',female';

解法2 note:了解substring_index()函数--字符串截取函数

substring_index(str,delim,count)
#str 是要处理的整段字符串;delim是分隔符;
#count是分隔符从左往右的位置,第一处,第二处,以此类推,从右往左是-1,-2,以此类推。
#从左往右,取count位置左侧所有str;从右往左,则是取count位置右侧所有str
SELECT
SUBSTRING_INDEX(profile,',',-1) as gender,
count(*) as number
FROM user_submit
GROUP BY gender;

其他常用函数

  • ATE(substr,str):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,则返回0;
  • POSITION(substr IN str):返回子串 substr 在字符串 str 中第一次出现的位置,如果字符substr在字符串str中不存在,与LOCATE函数作用相同;
  • LEFT(str,length):从左边开始截取str,length是截取的长度;
  • RIGHT(str,length):从右边开始截取str,length是截取的长度;
  • SUBSTRING(str,n,m):返回字符串str从第n个字符截取到第m个字符;
  • REPLACE(str,n,m):将字符串str中的n字符替换成m字符;
  • LENGTH(str):计算字符串str的长度。