[英]Find non-consecutive repeating text in a mysql column
我有一个包含大量电子邮件地址的数据库。
由于脚本中存在错误,数据库中充满了错误的电子邮件地址。 这些地址具有已知模式。
它们由真正的电子邮件地址组成,在开头与字符串连接。 此字符串本身是电子邮件地址的一部分。
例:
正确的电子邮件应该是:
john.doe@example.com
相反,我有:
doejohn.doe@example.com
或者:
johndoejohn.doe@example.com
我该如何识别这些地址?
我想创建一个在字符串中找到重复文本的正则表达式,但我可以找到如何做到这一点。
有任何想法吗?
您可以使用以下查询来处理LASTNAMEfirstname.lastname@something.com
模式,这将首先找到last_name,然后在第一部分之前将其替换为null .
。
concat(replace(substr(email,1,locate('.',email)),substr(email,LOCATE('.',email)+1,locate('@',email)-LOCATE('.',email)-1),'')
,
substr(email,locate('.',email)+1,length(email))
)
请参阅此处的SQL Fiddle示例
http://sqlfiddle.com/#!9/24fba/2
但是这不会处理FIRSTNAMElastnameFIRSTNAME.lastname@example.com
模式。
现在无法测试,但这可能有效:
^([^@]{5,})[^@]{1,}\\.\\1@[^@]+$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.