2016-09-21 7 views
0

同じSQL Serverデータベースに2つのテーブルがあります。 Table1は「電子メール」と「CompanyName」を含み、参照テーブルとして使用されているテーブルです。 Table2には同じ列がありますが、CompanyNameフィールドの一部がありません。電子メールドメイン名を使用してSQL Serverの列を更新する方法

Table1の 'Email'列のドメイン名(@の後のすべて)をTable1の 'EmailName'列と一緒に使用して、それぞれの 'CompanyName'と組み合わせて、 Table1は、Table2のEmailドメイン名と一致します。

たとえば、Email = '[email protected]'、 '[email protected]'とそれぞれのCompanyName = 'glaxosmithkline'、 'Johns Hopkins'のようなエントリがTable1にあるとします。

はその後、表2に、私は=「[email protected]」、「[email protected]」電子メールを持っている会社名は、私は、@ gsk.comと@jhmiを使用したい

空白になっています。 eduの部分をマッチさせて、 'Glaxosmithkline'と 'Johns Hopkins'をTable2 CompanyName列に入力します。

答えて

3

1つの方法は、ドメインを取得してテーブルを更新するためにCTEを使用することです。

with cteDomain as(
select distinct 
    CompanyName, 
    right(Email,len(Email) - CHARINDEX('@',Email,0)) as Domain --this is making assumptions as you posted 
from Table1) 

update Table2 
set t2.CompanyName = d.CompanyName 
from Table2 t2 
inner join cteDomain d on right(t2.Email,len(t2.Email) - CHARINDEX('@',t2.Email,0)) = d.Domain 
where ISNULL(t2.CompanyName,'') = '' 
0

私は私はあなたが得ることができるいくつかの文字列操作を使用してその後、両方の基準とあなたが会社

ごとに一意のエントリを持つことになりますように、その会社名とドメインと第三のテーブルを作成し、むしろ使用しますcharindex( '@'、Email)の後とcharindex( '。'、Email)のあとのすべてを新しいテーブルドメインフィールドと比較します。

関連する問題