You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL文本字段中精确匹配统计指定值的出现次数?

MySQL统计字符串序列中精确整数的出现次数

核心解决方案

针对你的需求,要统计无首尾逗号的整数序列字符串中**精确值'4'**的出现次数,避免误匹配包含4的数字(如14、24),可以通过给字符串前后拼接逗号,将每个数字转化为,X,的形式后进行精确匹配,最终计算总次数:

SELECT SUM(
    (LENGTH(CONCAT(',', `text`, ',')) - LENGTH(REPLACE(CONCAT(',', `text`, ','), ',4,', ''))) / LENGTH(',4,')
) AS total_count
FROM your_table_name;

原理说明

  1. 拼接逗号:CONCAT(',', text, ',')给原字符串首尾添加逗号,比如原字符串14,4,24,20,34,2会变成,14,4,24,20,34,2,,这样每个数字都被逗号包裹,确保只有独立的4会被匹配为,4,,而14、24这类数字会变成,14,、,24,,不会被误判。
  2. 计算出现次数:用替换前的字符串长度减去替换掉所有,4,后的长度,除以,4,的长度(3),得到每行中精确4的出现次数。
  3. 求和统计:通过SUM()函数将所有行的次数累加,得到总计数。

兼容空值/NULL的优化版本

如果表中存在text字段为NULL或空字符串的情况,可以用IFNULL避免计算错误:

SELECT SUM(
    IFNULL(
        (LENGTH(CONCAT(',', `text`, ',')) - LENGTH(REPLACE(CONCAT(',', `text`, ','), ',4,', ''))) / LENGTH(',4,'),
        0
    )
) AS total_count
FROM your_table_name;

验证示例

针对你给出的两行数据:

  • 第一行14,4,24,20,34,2:处理后匹配到1次,4,
  • 第二行34,67,4,98,64:处理后匹配到1次,4,
    最终求和返回2,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:42:11