ORACLE SQL如何检测电话号码中连续4次重复数字并置空
Oracle SQL 电话号码连续重复数字校验实现
核心逻辑说明
利用Oracle内置的正则匹配函数REGEXP_LIKE识别连续4次出现的相同数字,匹配规则为正则表达式([0-9])\1{3}:
[0-9]匹配任意单个数字()将匹配到的单个数字标记为捕获组\1引用第一个捕获组匹配到的数字{3}表示引用的数字连续重复出现3次,和捕获组的1次相加正好是连续4次相同数字
场景1:查询时直接转换输出结果
如果不需要修改原表数据,仅查询时输出校验后的值,使用CASE判断即可:
SELECT CASE WHEN REGEXP_LIKE(tel, '([0-9])\1{3}') THEN NULL ELSE tel END AS checked_tel FROM 你的表名;
场景2:更新原表将不符合规则的号码置为NULL
如果需要直接修改原表数据,执行UPDATE语句:
UPDATE 你的表名 SET tel = NULL WHERE REGEXP_LIKE(tel, '([0-9])\1{3}');
效果验证
对应你给出的示例数据,执行后结果如下:
| 原号码 | 校验后结果 | 匹配说明 |
|---|---|---|
| 012345678 | 012345678 | OK |
| 021444458 | NULL | 存在4个连续4 |
| 339547214 | 339547214 | OK |
| 111105874 | NULL | 存在4个连续1 |
内容的提问来源于stack exchange,提问作者Zed
相关产品推荐
相关产品推荐

