匹配MySQL中两个电子邮件地址的域和扩展名?

Posted

技术标签:

【中文标题】匹配MySQL中两个电子邮件地址的域和扩展名?【英文标题】:Match domain and extension of two email addresses in MySQL? 【发布时间】:2021-12-29 18:26:49 【问题描述】:

我有两张带有电子邮件地址的表格。有些电子邮件有子域,有些则没有。我需要根据域名和扩展名LEFT OUTER JOIN 这些表,同时忽略任何子域和 @ 符号留下的任何内容。

Contacts.Contact Managers.Manager
bob@api.ibm.com sarah@ibm.com
jim@sales.ibm.com jane@mgt.yahoo.ca
joe@ibm.com fred@google.com
zoe@yahoo.com sam@facebook.co.uk
elf@api.yahoo.ca
frank@yahoo.ca
jack@oracle.com
SELECT Contact.Contact, 
       Managers.Manager 
FROM Contact 
LEFT OUTER JOIN Manager ON ???

应该会产生以下结果:

Field: Contact Field: Manager
bob@api.ibm.com sarah@ibm.com
jim@sales.ibm.com sarah@ibm.com
joe@ibm.com sarah@ibm.com
zoe@yahoo.com
elf@api.yahoo.ca jane@mgt.yahoo.ca
frank@yahoo.ca jane@mgt.yahoo.ca
jack@oracle.com

ibm.comyahoo.ca 电子邮件已匹配。所以基本上,模式是:IGNORE@IF_THIS_EXISTS_THEN_IGNORE.MATCH.MATCH 这可能吗?如果是,那么产生这些结果的正确 SELECT 语句是什么?谢谢。

【问题讨论】:

LEFT JOIN,也可以获取没有匹配经理电子邮件的联系人。 所以所有 co.uk 的待遇都一样吗?这似乎很错误 谢天谢地,我只使用单点域扩展。但是您说得对,这种策略不适用于 .co.uk 等多点扩展名。 【参考方案1】:

要提取右侧的(最多)两个域部分,只需执行以下操作:

substring_index(substring_index(email,'@',-1),'.',-2)

将其应用于联系人和经理,并在结果相同时加入。

【讨论】:

以上是关于匹配MySQL中两个电子邮件地址的域和扩展名?的主要内容,如果未能解决你的问题,请参考以下文章

如果用户名/电子邮件与特定域不匹配,则显示窗口警报

如何从电子邮件地址 ArrayList 中删除重复的域电子邮件地址

如何在表单中验证电子邮件地址的域?

动态设计发件人电子邮件地址

text 一次性和临时电子邮件地址的域列表。用于过滤您的电子邮件列表以提高开放率(发送电子邮件t

通过从多个列中删除匹配的电子邮件域来过滤 Pandas 数据框