如何统计从MySQL数据库获取的逗号分隔值中指定数值的出现次数
统计逗号分隔列中特定数字的出现次数
嘿,我来帮你搞定这个问题!先看你的表数据:
+---------+-------------+ | id | Values | +---------+-------------+ | 11 | 1,2,4,5,6 | | 12 | 1,2,6 | | 13 | 4,5,6 | | 14 | 2,3,6 | +---------+-------------+
要统计数字6的出现次数,因为Values列是逗号分隔的字符串,直接用COUNT()没法精准统计每个字符串里的目标数字。这里给你一个简单有效的方法,用字符串替换结合长度计算来实现:
SELECT SUM( (LENGTH(Values) - LENGTH(REPLACE(Values, '6', ''))) / LENGTH('6') ) AS count_of_6 FROM your_table_name;
拆解一下这个查询的逻辑:
REPLACE(Values, '6', ''):把每一行Values里的所有6都替换成空字符串LENGTH(Values) - LENGTH(...):用原字符串的长度减去替换后的长度,这个差值就是所有6的总字符数- 除以
LENGTH('6')(这里是1,因为6是单个字符),就能得到每行中6的出现次数 - 最后用
SUM()把所有行的次数加起来,就是整个表中6的总出现次数
执行这个查询后,你会得到结果4,和你预期的完全一致。
额外提醒:
- 如果要统计的是多位数(比如12),记得把
LENGTH('6')改成对应数字的长度,比如LENGTH('12'),不然计算会出错 - 如果
Values列里的数字带有多余空格,记得先去掉空格再统计,比如先做REPLACE(Values, ' ', '')处理
内容的提问来源于stack exchange,提问作者Anitha S
相关产品推荐
相关产品推荐

