2015-06-29 2 views
3

Я пытаюсь удалить выражение из текста, дающего слово, и символ начала и конца. Например:Как удалить выражение, дающее слово, и символ начала и конца

http://removecharacter.com?key=keyvalue&product=productid&user=userid 
http://exampleremove.com?id=keyvalue&prodID=productid&login=userid 

Я хочу удалить productid для всех моих ссылок (имя параметра не то же самое для всех страниц, но значение параметра оно и есть).

Так что мой URLs будут:

http://removecharacter.com?key=keyvalue&user=userid 
http://exampleremove.com?id=keyvalue&login=userid 

Давать слово productid и разделитель & и &. я играл с CHARINDEX, LEFT и RIGHT функции, но без какого-либо успеха

+1

_I играл с функцией CHARINDEX LEFT и RIGHT, но любой успех_ -> Не могли бы вы показать нам, что вы пробовали? –

ответ

2

Попробуйте это:

DECLARE @t TABLE(url NVARCHAR(1000)) 

INSERT INTO @t VALUES 
('http://removecharacter.com?key=keyvalue&product=productid&user=userid'), 
('http://exampleremove.com?id=keyvalue&prodID=productid&login=userid'), 
('http://exampleremove.com?id=keyvalue&login=userid') 


;WITH cte AS(SELECT *, 
        REVERSE(url) AS newurl, 
        CHARINDEX('&ditcudorp', REVERSE(url)) pt 
      FROM @t WHERE CHARINDEX('&ditcudorp', REVERSE(url)) > 0) 
UPDATE cte SET url = REVERSE(STUFF(newurl, pt, CHARINDEX('&', newurl, pt + 1) - pt, '')) 

SELECT * FROM @t 

Выход:

url 
http://removecharacter.com?key=keyvalue&user=userid 
http://exampleremove.com?id=keyvalue&login=userid 
http://exampleremove.com?id=keyvalue&login=userid 

В cte вы реверсивный url и найти индекс '%&ditcudorp%'. Затем вы заменяете все символы в позиции между индексом '%&ditcudorp%' и индексом следующего '%&%' с пустым символом.

+0

Позвольте мне попробовать! Скажите u что-то – user2112420

+1

'CHARINDEX' также будет работать, а не' PATINDEX'. – ughai

+0

@ughai, да, логично использовать одни и те же функции. –

Смежные вопросы