【问题标题】:How to fix emails containing double dot in domain?如何修复域中包含双点的电子邮件?
【发布时间】:2017-07-27 16:41:36
【问题描述】:

如何使用原始 mysql 查询更新其域中包含双点的电子邮件?

所以我有这些格式为sample_email@gmail..com 的电子邮件并将其转换为sample_email@gmail.com

【问题讨论】:

  • @t.niese 这在 SQL 中有效吗?
  • @jpaugh 抱歉,不知何故混淆了两个问题。
  • @t.niese NP。我希望你可以在 SQL 中做到这一点!我想我发现了一个 SQL 重复项。

标签: mysql email-validation


【解决方案1】:

replace 应该可以解决问题:

UPDATE mytable
SET    email = REPLACE(email, '..', '.')
WHERE  email LIKE '%..%'

【讨论】:

  • 您可能希望首先确保数据库中没有合法出现的..。像chris..something@gmail.com 这样的东西在技术上可能是有效的。
  • @ceejayoz 有没有办法只能定位域名中的双点?
  • @Lorence 好吧,首先,我要防止这种无效的东西进入数据库。之后,您可以使用 MySQL 的正则表达式功能进行清理。 (或者,执行SELECT * FROM mytable WHERE email LIKE '%..%' - 如果.. 没有任何合法 使用,您可以运行此更新查询)。
【解决方案2】:

您只需要使用 '%@%..%' 作为类似条件来提取所有在域上具有双点的电子邮件。 然后用@分割文本,在域中替换并连接文本。

select email
    ,concat(left(email,instr(email,'@')),replace(right(email,instr(reverse(email),'@')-1),'..','.')) new_email
from
    (
    select 'sample_email@gmail..com ' email
    union
    select 'sample..email@..foo.com'
    union
    select 'other..sample..mail..@foo..com..org'
    ) t
where email like '%@%..%'

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2011-06-22
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多