正しく理解できたと思います。繰り返します。
- エントリがたくさんあるテーブルが1つあります
- 「検索列」を検索するExcelのこのリストがあります
- 一致する場合は、値全体を「列の置換」に置き換えます
この場合、これが解決策になる可能性があります:
declare @data table (Column1 nvarchar(50))
insert into @data
(Column1)
values (N'RbC investment for Seniors 65+'),
(N'RBC inv for juniors')
declare @replace table
(
OriginalValue nvarchar(50),
NewValue nvarchar(50),
[priority] int
)
insert into @replace
(OriginalValue, NewValue, [priority])
values (N'rbc inv', N'RBC dominion securities', 2),
(N'rbc dom', N'RBC dominion securities', 2),
(N'RBC', N'RBC Bank', 3)
update @data
set Column1 = coalesce((
select top 1
NewValue
from @replace
where Column1 like '%' + OriginalValue + '%'
order by [priority]
), Column1)
select *
from @data
テーブル「データ」は、置換を行うテーブルになります。
これを使用すると、かなりの副作用が発生する可能性があります(たとえば、「search_column」の%のようなワイルドカード、複数の一致-現在、「ランダム」なものが使用され、パフォーマンスが最高ではない可能性があります...)より正確な答えには、より良い質問が必要です。
編集:
ラルフのおかげで...重複した一致を処理できるように、「置換」テーブルに優先順位を追加しました。
「RBC」の優先度が3の場合、結果は次のようになります。
優先度1の場合: