繁体   English   中英

在mysql列中查找非连续重复文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM