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

MySQL中如何检查字符全相同及分别统计全零与前缀多零数字

MySQL字符串检查与分类统计解决方案

一、检查字符串所有字符是否完全相同

要判断字符串的所有字符是否一致,有两种简洁的实现方式:

方法1:使用REPLACE函数

将字符串中的第一个字符全部替换为空,若结果为空字符串,则说明所有字符都和第一个字符相同:

SELECT number 
FROM num 
WHERE REPLACE(number, SUBSTRING(number, 1, 1), '') = '';

方法2:使用正则表达式REGEXP

生成匹配“第一个字符重复整个字符串”的正则表达式,进行匹配:

SELECT number 
FROM num 
WHERE number REGEXP CONCAT('^', SUBSTRING(number, 1, 1), '+$');

二、分类统计全零数字与前缀4个及以上0的数字

你的尝试语句错误在于用number like '0000%0'无法准确识别全零字符串,以下是正确的实现方案:

场景1:按number分组统计(与初始查询逻辑对齐)

同时统计每个number的出现次数,并标记类型:

SELECT 
    number,
    COUNT(*) AS attempts,
    CASE
        WHEN REPLACE(number, '0', '') = '' THEN 20  -- 所有字符都是0,标记为20
        WHEN number LIKE '0000%' THEN 2             -- 前缀含4个及以上0但不全为0,标记为2
    END AS tag
FROM num
WHERE number LIKE '0000%'  -- 筛选前缀4个0或全零的记录(全零必然满足该条件)
GROUP BY number;

场景2:按日期分组统计(对应用户尝试的分组方式)

统计每日两类记录的数量:

SELECT 
    DATE(date) AS stat_date,
    -- 统计全零记录的数量
    COUNT(CASE WHEN REPLACE(number, '0', '') = '' THEN 1 END) AS total_tag20,
    -- 统计前缀4个及以上0但不全零的记录数量
    COUNT(CASE WHEN number LIKE '0000%' AND REPLACE(number, '0', '') != '' THEN 1 END) AS total_tag2
FROM num
WHERE number LIKE '0000%'
GROUP BY stat_date;

错误分析

你原语句中的number like '0000%0'条件逻辑错误:它仅匹配前缀4个0且末尾为0的字符串,无法区分全零字符串和“前缀4个0但中间/末尾有非0字符”的字符串,必须通过REPLACE(number, '0', '') = ''来精准判断全零字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:10:32