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

SQL Server如何判断手机号列是否存在同一数字重复超7次的无效值

SQL Server 电话号码连续重复数字校验实现

核心逻辑

我们需要判断电话号码字符串中是否存在同一个数字连续出现≥8次(即超过7次)的情况,命中则返回INVALID,否则判定为有效。该逻辑兼容带括号、空格、横杠等特殊格式的电话号码,无需提前清洗特殊字符。

实现方案

方案1:查询时实时校验(兼容所有SQL Server版本)

直接使用PATINDEX函数匹配连续重复数字:

SELECT 
    phone_num AS 电话号码,
    CASE 
        WHEN PATINDEX('%00000000%', phone_num) > 0
          OR PATINDEX('%11111111%', phone_num) > 0
          OR PATINDEX('%22222222%', phone_num) > 0
          OR PATINDEX('%33333333%', phone_num) > 0
          OR PATINDEX('%44444444%', phone_num) > 0
          OR PATINDEX('%55555555%', phone_num) > 0
          OR PATINDEX('%66666666%', phone_num) > 0
          OR PATINDEX('%77777777%', phone_num) > 0
          OR PATINDEX('%88888888%', phone_num) > 0
          OR PATINDEX('%99999999%', phone_num) > 0
        THEN 'INVALID'
        ELSE '有效'
    END AS 校验结果
FROM your_table;

规则调整说明:如果你的要求是连续重复7次就算无效,把上面每个模式里的数字个数从8改为7即可,匹配你给出的(401) 4444444命中无效的示例。

方案2:表级校验约束(禁止无效数据入库)

如果需要从入库层面限制无效数据,可以给表增加校验约束:

ALTER TABLE your_table
ADD CONSTRAINT CK_ValidatePhoneRepeatDigit
CHECK (
    PATINDEX('%00000000%', phone_num) = 0
    AND PATINDEX('%11111111%', phone_num) = 0
    AND PATINDEX('%22222222%', phone_num) = 0
    AND PATINDEX('%33333333%', phone_num) = 0
    AND PATINDEX('%44444444%', phone_num) = 0
    AND PATINDEX('%55555555%', phone_num) = 0
    AND PATINDEX('%66666666%', phone_num) = 0
    AND PATINDEX('%77777777%', phone_num) = 0
    AND PATINDEX('%88888888%', phone_num) = 0
    AND PATINDEX('%99999999%', phone_num) = 0
);

方案3:简洁写法(仅支持SQL Server 2017及以上版本)

用REPLICATE生成重复数字模式,避免写10次重复判断:

SELECT 
    phone_num AS 电话号码,
    CASE 
        WHEN EXISTS(
            SELECT 1 FROM (VALUES('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'),('8'),('9')) t(digit)
            WHERE PATINDEX('%' + REPLICATE(t.digit, 8) + '%', phone_num) > 0
        ) THEN 'INVALID'
        ELSE '有效'
    END AS 校验结果
FROM your_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 14:36:07