2017-07-28 20 views
0

我有我的MSQL服务器的电子邮件列,我需要修剪电子邮件只留下域。因此@包括“@”左侧的所有内容都需要消失。与此同时我只需要1个域,以便像没有重复..如何在MSQL TRIM电子邮件只留下域没有重复(只有1域)

实施例:

Column name = Domains 

[email protected] 
[email protected] 
[email protected] 
     . 
     . 
     . 

-------从 - >到-------

Column name = Domains 

EXAMPLE.COM 
EXAMPLE.NET 
+1

您的预期产出是多少? –

+0

修剪电子邮件地址,以便只有该电子邮件的域名停留在那里。而且我不能在新表列中有重复的域 – Vissow

回答

0
DECLARE @foo TABLE (foo varchar(100)); 
INSERT @foo 
VALUES 
('[email protected]'), 
('[email protected]'), 
('[email protected]') 

--fun version 
SELECT DISTINCT 
    PARSENAME(REPLACE(foo, '@', '.'), 2) + '.' + PARSENAME(foo, 1) 
FROM 
    @foo 

--deals with more than 3 dots 
--8000 allows us to *not* know the actual string length. It "just works" 
SELECT DISTINCT 
    SUBSTRING(foo, CHARINDEX('@', foo)+1, 8000) 
FROM 
    @foo 
+0

我是否有机会只在已经存在的列上工作?我在列域中存储了超过7000多封电子邮件,我只想更新该列以删除同一域的多个匹配,并同时修剪电子邮件以仅保留域。 – Vissow

+0

我回答了提问的问题。对你未问的问题的回答是“是的,你可以” – gbn

+0

@Vissow你在该表中有其他列吗?当您精减到每个域的一行时,您希望发生来自其他行中其他列的数据? –

相关问题