【问题标题】:How to select all the unique gmail emails from a set of emails?如何从一组电子邮件中选择所有独特的 gmail 电子邮件?
【发布时间】:2015-11-13 01:15:35
【问题描述】:

我注意到 gmail 不关心电子邮件中是否存在 .,这意味着 ex.ample@gmail.com 等同于 exam.ple@gmail.com,这是 Google 的一个不错的功能,但对于尝试使用的开发人员来说是一个 PITA维护唯一电子邮件地址的列表。

我有一张包含电子邮件列表的表格。 gmail 用于检测唯一电子邮件的确切规则是什么,给定一组电子邮件,我如何找到 实际 唯一电子邮件?

这是我的架构:

sql> select * from subscribers;

id |     email           
-------------------------
1  | user.name1@gmail.com
2  | username.1@gmail.com
3  | user3@example.net
...

预期的输出是一组唯一(且有效!)的电子邮件:

id |     email           
-------------------------
1  | user.name1@gmail.com
3  | user3@example.net

Fiddle.

【问题讨论】:

  • 你使用的数据库是什么?
  • select distinct replace(email,'.','') from yourtable
  • @Indian 它不会也替换gmail.com 中的. 吗?
  • @JohnBupit - 试试这个sqlfiddle.com/#!9/b3eb5/9
  • @Indian Still misses some cases,我想。考虑电子邮件mailcomsomething@yahoo.com,它将被转换为mail.comsomething@yahoo.com - 这是一个无效的电子邮件。

标签: mysql sql email gmail


【解决方案1】:
select em, count(*)
from (
select replace(email, '.','') as em
from subscribers
where email like '%@gmail.com%') t
group by em
having count(*) = 1;

这是你想要做的吗?

编辑:选择不同的电子邮件

select distinct 
concat(replace(substring(email,1,INSTR(email,'@')-1),'.',''),    
       substring(email,INSTR(email,'@')))
from subscribers;

Fiddle

【讨论】:

  • 是的..因为所有电子邮件都是重复的..如果您只需要查看独特的电子邮件,则不需要group by。将编辑我的答案。
  • 这将排除非 gmail 电子邮件。但我想他们可以简单地联合起来。此外,gmail.com 中的 . 也不会出现在输出中。
  • @JohnBupit..请查看更新后的代码以仅选择不同的电子邮件,忽略. 之前的@
猜你喜欢
  • 2017-11-03
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 2014-09-08
  • 1970-01-01
  • 2014-03-18
相关资源
最近更新 更多