2015-08-19 59 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'中的'.'在輸出中不存在。 –

相關問題