2017-07-28 3 views
0

私のMSQLサーバに電子メールカラムがあり、ドメインを離れるだけの電子メールをトリミングする必要があります。 "@"を含む@の左側のすべてが消える必要があります。MSQLで電子メールをTRIMして重複なしでドメインを残す方法(1ドメインのみ)

を-------する> -

Column name = Domains 

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

-------から:

例..重複なしのようなので、同時に、私は1つのだけのドメインを必要とします

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あなたはそのテーブルの他の列を持っていますか?各ドメインの1つの行に分けたときに、他の行の追加の列のデータに何を起こしたいですか? –

関連する問題