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

核查电话号码列格式正确性的SQL查询问题求助

核查电话号码格式的正确SQL查询语句

你的原LIKE语句写法有误,SQL的LIKE不支持[000-9]这类正则风格的字符范围匹配,且通配符使用错误,所以无法返回预期结果。以下是两种可行的解决方法:

方法一:使用LIKE匹配(兼容多数数据库)

要筛选不符合(XXX) XXX-XXXX规范的错误条目,可执行:

SELECT * FROM table_name
WHERE telephone_number NOT LIKE '(___) ___-____';

_是SQL中LIKE的单个字符通配符,每个_对应一位数字,能精准匹配格式结构,揪出像(123)456-7890(缺空格)、1234567890(无括号/空格/横线)这类错误记录。

若要找符合格式的条目,去掉NOT即可:

SELECT * FROM table_name
WHERE telephone_number LIKE '(___) ___-____';

方法二:使用正则表达式匹配(支持正则的数据库,如MySQL、PostgreSQL)

如果你的数据库支持正则,可以更严格地限定只能是数字:

MySQL/MariaDB 版本:

-- 筛选不符合格式的条目
SELECT * FROM table_name
WHERE telephone_number NOT REGEXP '^\\([0-9]{3}\\) [0-9]{3}-[0-9]{4}$';

PostgreSQL 版本:

-- 筛选不符合格式的条目
SELECT * FROM table_name
WHERE telephone_number !~ '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$';

正则表达式^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$的规则:

  • ^ 和 $ 分别限定字符串的开头和结尾,确保整个号码都符合格式
  • \( 和 \) 匹配左右括号(需转义)
  • [0-9]{3} 匹配3位数字,[0-9]{4} 匹配4位数字
  • 中间的空格和横线严格匹配格式要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:52:45