如何修剪列中的电子邮件,同时删除重复项(MSQL2017,UPDATE列)

时间:2017-07-28 11:10:57

标签: sql sql-server trim sql-server-2017

我有一个包含一些数据的表,其中一个是存储在名为" Domain"。

的列中的电子邮件。

我需要更新" Domain"所以我剪切了电子邮件,只留下了域名(例如test@testmail.com,查询后会像testmail.com一样)。

因此Domain列中存储了超过290000封电子邮件,并且还有一些NULL' s ... 正如我所说,我正在寻找域名,我不需要数据,包括@ 另外,NULL列中不需要重复的域列表或Domain值。

所以我正在寻找的是一个查询,它将修剪电子邮件以将它们转换为域,同时查询将删除具有NULL值和重复域的数据。

最终结果应该是列Domain,只有唯一的域,里面没有NULL。

2 个答案:

答案 0 :(得分:2)

简单如下:

SELECT DISTINCT RIGHT(Email, LEN(Email) - CHARINDEX('@', email)) AS email_domain
FROM table
WHERE Email IS NOT NULL;

答案 1 :(得分:2)

如果您想要独特的域名。 。

select distinct (case when domain like '%@%'
                      then stuff(domain, 1, charindex('@', domain) + 1, '')
                      else domain
                 end)
from t
where domain is not null;