匹配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.com
和 yahoo.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 中删除重复的域电子邮件地址