sql - 如何使用正则表达式从电子邮件中排除某个域而无需负前瞻?
问题描述
对于以下数据,如何在使用 REGEXP_LIKE 的 where 子句的一行中排除所有以 gmail.com 作为域的电子邮件?由于数据库约束和业务逻辑,我需要使用 REGEXP_LIKE 上的正则表达式将其排除。关于如何附加到正则表达式(由于 plsql 没有负前瞻)排除的任何想法?请指教。谢谢!
WITH t AS
(
SELECT 'brucewayne.1981@gmail.com' email
FROM dual
UNION ALL
SELECT 'clark_kent@gmail.com'
FROM dual
UNION ALL
SELECT '1Tonystark.1980@gmail.com'
FROM dual
UNION ALL
SELECT 'peter@parker.1989@yahoo.com'
FROM dual
UNION ALL
SELECT 'pete.1989@yahoo.com'
FROM dual
UNION ALL
SELECT 'yahoo.com'
FROM dual
UNION ALL
SELECT '123@yahoo.com' FROM dual
)
SELECT *
FROM t
WHERE REGEXP_LIKE (EMAIL,'^[^.]?[A-Za-z0-9!#$%&''*+-/=?^_`{|}~\.]{1,62}[^.]?@[^.-]?[A-Za-z0-9.-]{1,253}[^.-]\.[A-Za-z]{2,256}$')
解决方案
用于NOT LIKE
排除
WHERE REGEXP_LIKE (EMAIL,'^[^.]?[A-Za-z0-9!#$%&''*+-/=?^_`{|}~\.]{1,62}[^.]?@[^.-]?[A-Za-z0-9.-]{1,253}[^.-]\.[A-Za-z]{2,256}$')
AND EMAIL NOT LIKE '%@gmail.com'
推荐阅读
- python - 在 BeautifulSoup (Python) 中找不到亚马逊重定向的 url。从哪里获得重定向网址的任何想法?
- html - Xslt在不同语言的不同规则的字符串之间获取文本
- c# - 如何在 Windows 窗体 C# 中一次将两个文件发布到 API
- javascript - XSS 黑名单/白名单
- grafana - 无法在 Grafana 4.5.2 中管道模板变量
- reporting-services - 将参数传递给报告 URL - power bi 服务中的 ssrs 报告
- javascript - javascript中的最大堆?
- c# - C# 中的毫秒数 - long 还是 int?
- node.js - 如何使用“限制为 1 个响应”提交 Google 表单并绕过登录?
- ckeditor - CKeditor 在嵌入 twitter/instagram 时删除某些部分