如何从一组电子邮件中 select 所有唯一的 gmail 电子邮件?
How to select all the unique gmail emails from a set of emails?
我注意到 gmail 不关心电子邮件中是否存在 .
,这意味着 ex.ample@gmail.com
等同于 exam.ple@gmail.com
,这是一个很好的功能Google,但对于试图维护唯一电子邮件地址列表的开发人员来说是一个 PITA。
我有一个包含电子邮件列表的 table。 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
select em, count(*)
from (
select replace(email, '.','') as em
from subscribers
where email like '%@gmail.com%') t
group by em
having count(*) = 1;
这是你想要做的吗?
编辑:至 select 个不同的电子邮件
select distinct
concat(replace(substring(email,1,INSTR(email,'@')-1),'.',''),
substring(email,INSTR(email,'@')))
from subscribers;
我注意到 gmail 不关心电子邮件中是否存在 .
,这意味着 ex.ample@gmail.com
等同于 exam.ple@gmail.com
,这是一个很好的功能Google,但对于试图维护唯一电子邮件地址列表的开发人员来说是一个 PITA。
我有一个包含电子邮件列表的 table。 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
select em, count(*)
from (
select replace(email, '.','') as em
from subscribers
where email like '%@gmail.com%') t
group by em
having count(*) = 1;
这是你想要做的吗?
编辑:至 select 个不同的电子邮件
select distinct
concat(replace(substring(email,1,INSTR(email,'@')-1),'.',''),
substring(email,INSTR(email,'@')))
from subscribers;