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

Oracle SQL中筛选非邮箱/10位手机号Token的方法及语句正确性咨询

筛选非邮箱/非手机号Token的Oracle SQL方案

当前语句的问题

你当前的语句TOKEN NOT LIKE '%@%' AND LENGTH(TOKEN) > 10存在两个明显缺陷:

  • 遗漏了长度小于10的非邮箱、非手机号Token(比如长度为9的字符串,既不是邮箱也不是10位手机号,但会被当前语句排除)
  • 未验证Token是否为纯数字:如果有长度为10但包含字母/符号的字符串,它本质不是手机号,但当前语句会把它当成手机号排除,不会被筛选出来

正确的筛选语句

要准确筛选出既非邮箱也非10位纯数字手机号的Token,需要结合长度校验和纯数字校验,使用Oracle的正则表达式函数REGEXP_LIKE:

SELECT Token
FROM 你的表名
WHERE Token NOT LIKE '%@%'
  AND NOT (LENGTH(Token) = 10 AND REGEXP_LIKE(Token, '^[0-9]+$'));

语句说明

  • Token NOT LIKE '%@%':排除所有包含@的邮箱格式Token
  • LENGTH(Token) = 10:锁定长度为10的字符串
  • REGEXP_LIKE(Token, '^[0-9]+$'):验证字符串是否为纯数字(^匹配开头,[0-9]+匹配1个及以上数字,$匹配结尾,确保整个Token都是数字)
  • NOT (...):排除掉符合“10位纯数字”规则的手机号Token

扩展优化(可选)

如果你的手机号有更严格的规则(比如国内手机号以1开头),可以调整正则表达式进一步精准匹配:

SELECT Token
FROM 你的表名
WHERE Token NOT LIKE '%@%'
  AND NOT (LENGTH(Token) = 10 AND REGEXP_LIKE(Token, '^1[0-9]{9}$'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:15:27