У меня есть переменная таблицы, которая содержит список слов, которые я хочу заменить из результатов запроса.Заменить текст столбца из списка зарезервированных слов
Я хочу найти любое из этих слов 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
Я хотел бы, чтобы он возвращал только один результат, и как в «ООО» и «Inc» будет удален, так как эти слова в зарезервированном переменная таблицы слов. Таким образом, строка, "Sony LLC Inc"
бы ...
Product_ID NewCompanyName
100 Sony
Является ли CLR параметром? У вас может быть регулярное выражение с шаблоном, являющимся словами, разделенными оператором чередования. '(Word1 | word2)', а затем заменяет совпадения с пустой строкой. –
Возможно [это] (http: // stackoverflow .com/questions/28727375/search-and-replace-a-string-t-sql) help? – HABO