2015-08-19 99 views
3

我注意到gmail并不在乎电子邮件中是否存在.,这意味着[email protected]相当于[email protected],这是Google的一个很好的功能,但是对于试图维护唯一电子邮件列表的开发人员地址。如何从一组电子邮件中选择所有独特的Gmail邮件?

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

这里是我的架构:

sql> select * from subscribers; 

id |  email   
------------------------- 
1 | [email protected] 
2 | [email protected] 
3 | [email protected] 
... 

预期输出是一组独特的(合法的!)电子邮件:

id |  email   
------------------------- 
1 | [email protected] 
3 | [email protected] 

Fiddle.

+1

什么是你使用的数据库? –

+0

'从yourtable'选择不同的替换(电子邮件,'。','') –

+0

@Indian它是否也会取代'gmail.com'中的'.'? –

回答

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

+0

[似乎返回一个空集](http://sqlfiddle.com/#!9/b3eb5/4)。 –

+0

是的。因为所有的电子邮件都是重复的。如果你只需要看到独特的电子邮件,你不需要'group by'。将编辑我的答案。 –

+0

这将排除非Gmail邮件。但我想他们可以简单地联合起来。另外,'gmail.com'中的'.'在输出中不存在。 –

相关问题