クエリ結果から置き換えたい単語のリストを含むテーブル変数があります。
600
テーブル変数でこれらの単語のいずれかを検索したいと思います。この例のためだけに 3 を実行しました。そして、単語が見つかったら置き換えたいと思います。結果は戻ってきますが、単語ごとに重複しています。会社名の各単語を取得し、一致するかどうかを確認する UDF があります。
declare @findreservedwords table
(findWord varchar(50) primary key)
INSERT INTO @findreservedwords
VALUES
('Inc','LLC','Corp.')
--actually I have over 500 records in the @findreservedwords table variable. Just 3 for this example
select distinct p.product_id,replace(c.Company_Name,f.findword,'') as NewCompanyName,f.findWord,sep.col
FROM PRODUCT p
INNER JOIN COMPANY c on p.Manufacturer_ID = c.company_id
CROSS APPLY dbo.SeparateValues(c.company_name, ' ') sep
LEFT OUTER JOIN @findreservedwords f on f.findWord = sep.col
WHERE p.product_id = 100
これは戻ってきます...
Product_ID NewCompanyName FindWord Col
100 null null Sony
100 Sony Inc LLC LLC
100 Sony LLC Inc Inc
結果を 1 つだけ返してもらいたいのですが、「LLC」と「Inc」の両方が削除されます。これらの単語は予約語テーブル変数にあるためです。文字列「Sony LLC Inc」
だろう...
Product_ID NewCompanyName
100 Sony