[英]Excluding records using regex
我正在尝试排除具有任何名称并以@abcd.in 或@abcd.live 结尾的email_id,并且只包括具有手机号码的电子邮件,但不确定这是否是我正在使用的正确正则表达式,可以你帮忙?
我用来过滤的语句如下
(NOT(lower(`table`.`user_email`) like '[a-z].*@Abcd.in$'|'[a-z].*@Abcd.live$')
如果你想基于正则表达式进行过滤,你应该使用REGEXP
或REGEXP_LIKE
(两者都是同义词)。 假设您只想排除提到的两个域,您可以使用:
SELECT *
FROM yourTable
WHERE email NOT REGEXP '[a-z]+@Abcd\.(in|live)$';
假设您还想通过将某些 email 模式列入白名单来增强上述功能,您可以再次调用REGEXP
。
我可能会做这样的事情:
SELECT *
FROM mytable
WHERE SUBSTRING_INDEX(user_email,'@',-1) IN ('Abcd.live','Abcd.in')
AND SUBSTRING_INDEX(user_email,'@',1) REGEXP '[0-9]'
使用SUBSTRING_INDEX()
通过使用@
作为分隔符来分隔 email 名称和域。 第一个条件只是用IN
过滤域,所以除了定义的域之外,它将被省略。 然后第二个条件是使用REGEXP
检查 email 名称中是否存在数值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.