2017-07-28 45 views
0

我有一个表的一些数据其中之一是存储在一个名为“域”列中的电子邮件。如何修剪一列电子邮件,并在同一时间删除重复(MSQL2017,UPDATE列)

我需要更新“域名”,所以我剪掉了电子邮件,只留下域名(例如:[email protected],查询后会像这样testmail.com)。

所以Domain列有内部存储超过290000电子邮件,也有一些空的...
正如我说我找域名,我不需要留下的数据和包括@
也不要”吨需要重复的域名列表或DomainNULL值。

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

最终的结果应该是Domain列只有唯一域,无内空值。

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

你是什么意思的“更新”,并在同一时间有不同的结果?您是否希望显示结果或更新表格内容? – Hybris95

+0

我要更新表的内容。 – Vissow

回答

2

那样简单。 。 。

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

如果你想唯一域:

+0

我以为你想更新表的内容?这只是显示数据 – Hybris95

+0

“我所寻找的是一个查询,将修剪的电子邮件,同时将其转换成域的查询将删除与NULL值和重复域的数据。”如果你想改变表格的内容,我建议你问另外一个问题与样本数据和预期的结果一起。 –

相关问题