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

MySQL正则查询电话号码字段并提取匹配内容的实现需求

解决方法:提取正则匹配的手机号片段

没问题,这个需求用MySQL的REGEXP_SUBSTR函数就能轻松实现,单条查询搞定,完全不需要额外的分组键。

核心思路

你的原查询已经通过REGEXP过滤出了包含目标手机号片段的记录,现在只需要在SELECT子句中用REGEXP_SUBSTR函数,从phone字段里提取出匹配到的具体片段即可。这个函数会自动找到每条记录中第一个符合正则规则的子串,完美对应你要提取的123456或565834。

最终SQL语句

SELECT 
    name,
    REGEXP_SUBSTR(phone, '123456|565834') AS `Matched`,
    phone AS `Phone`
FROM customers
WHERE phone REGEXP '123456|565834';

效果验证

这条语句会输出你需要的格式:

NameMatchedPhone
Naveen12345612345678
Naveen2123456123456789
Arun5658349565834
Arun256583410565834

每条记录都会独立处理,自动提取对应的匹配片段,不需要依赖任何额外的唯一分组键,完全满足你的要求。

兼容旧版本MySQL(低于8.0)

如果你的MySQL版本不支持REGEXP_SUBSTR,可以用SUBSTRING结合LOCATE的方式替代,语句如下:

SELECT 
    name,
    CASE
        WHEN LOCATE('123456', phone) > 0 THEN '123456'
        WHEN LOCATE('565834', phone) > 0 THEN '565834'
    END AS `Matched`,
    phone AS `Phone`
FROM customers
WHERE phone REGEXP '123456|565834';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:04:37