2

会社名に含まれる可能性のある単語とその同義語の辞書である表があります。これを使用して、別のテーブルの名前を標準化したいと考えています。たとえば、「WIDGET COMPANY INCORPORATED」は「WIDGET CO INC」に標準化されます。以下のクロス結合と同じくらい簡単だと思いましたが、リスト全体ではなく、リストの最初の同義語に対してのみ実行されるようです。私はこれについて間違った方法で進んでいますか?これを理解できない場合は、代わりにSSISで実行しようとしていましたが、比較的単純なタスクであるべきものが複雑になりすぎると思います...もちろん、これはクロス結合であるため、私は理解しています、私たちは多くの行について話している-正確には5000万...

update [dbo].[Company addresses]
set [Name 1 syn] = replace(a.[Name 1 syn], ' ' + b.[Synonym] + ' ', ' ' + b.[Base] + ' ')
from [dbo].[Company addresses] a
cross join dbo.Synonyms b
4

1 に答える 1

3

次のようなものはどうですか:

DECLARE @RC int = 1;

WHILE @RC > 0
BEGIN
  update [dbo].[Company addresses]
  set [Name 1 syn] = replace(a.[Name 1 syn], ' ' + b.[Synonym] + ' ', ' ' + b.[Base] + ' ')
  from [dbo].[Company addresses] a
  inner join dbo.Synonyms b on a.[Name 1 syn] LIKE '% ' + b.[Synonym] + ' %';

  SET @RC = @@ROWCOUNT;
END
于 2013-10-08T19:04:49.220 に答える