TECHBUZZ69 Ответов: 2

Как заменить строку во входной строке, если входная строка имеет подстроку в строках таблицы?


У меня есть таблица с одним столбцом значений, как показано ниже:

ДЕЙСТВОВАТЬ ТОЛЬКО
ТОЛЬКО НОВЫЙ ЮЖНЫЙ УЭЛЬС
ВИКТОРИЯ ТОЛЬКО

Если теперь я передаю строку, скажем, "АВС - Виктория только", тогда мне нужно вернуться "азбука" в результате (как "Квинсленд всего" в строке таблицы).
Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо.

Что я уже пробовал:

Я пытался создать функцию, но безуспешно.

2 Ответов

Рейтинг:
16

Karthik_Mahalingam

try

<pre>

declare @table table ( col nvarchar(50) )

insert into @table values ('ACT ONLY')
insert into @table values ('NSW ONLY')
insert into @table values ('QLD ONLY')

declare @find  nvarchar(50)
declare @result  nvarchar(50)
set @find ='ABC - QLD ONLY'
set  @result =    ( select top 1 col from @table where @find like '%'+col+'%')
if(@result is not null )
begin
 select @result = REPLACE(@find , @result ,'') 
  select @result = REPLACE(@result , '-' ,'') 
end
select  @result -- ABC


Maciej Los

5ed!

Karthik_Mahalingam

Спасибо Мацей

Рейтинг:
12

Bryian Tan

Это тоже должно сработать

DECLARE @temp TABLE (Col1 VARCHAR(50))
DECLARE @input VARCHAR(50)

SET @input = 'ABC - QLD ONLY'

INSERT INTO @temp
	SELECT 'ACT ONLY' UNION SELECT 'NSW ONLY' UNION SELECT 'QLD ONLY'

SELECT REPLACE(REPLACE(@input, col1, ''),' - ','') FROM @temp
WHERE CHARINDEX(col1,@input)  > 0


Maciej Los

5ed!

Bryian Tan

Спасибо.