2016-11-21 18 views
0

В моей таблице Products в SQL Server, у меня есть столбец UrlLink со значениями, которые выглядят так:Удалить строку в SQL Server

Id   UrlLink 
----------------------------------- 
1   domain/product1.html?7 
2   domain/product2.html?34 
3   domain/product294.html?6576 
4   domain/product54.html?765 

Как удалить параметр

?7, ?34, ?6576, ?765 

из колонки UrlLink?

Спасибо!

ответ

1

Для удаления строки запроса части из столбца UrlLink в таблице, вам нужно использовать Left и CharIndex в вашем UPDATE заявлении.

UPDATE Products 
SET UrlLink = LEFT(UrlLink, CHARINDEX('?',UrlLink)-1) 
+0

Благодаря @Colin Mackay! –

2

left Использование и charindex должно работать:

select left(UrlLink, charindex('?',UrlLink)-1) from Products; 

Это вернет все до первого появления ?. Возможно, вы захотите добавить несколько нулевых проверок, если параметр не является обязательным в столбце UrlLink.

0

Вы должны найти ? в своем URL-адресе и взять строку к ней. Вы можете использовать LEFT/SUBSTRING для получения подстроки и CHARINDEX для нахождения ? в вашей строке. Проверьте мой запрос ниже

select id, substring(urllink,1,charindex('?',urllink)-1) 
from products 
0

Попробуйте с этим кодом:

DECLARE @myvar varchar(100); 
SET @myvar = 'domain/product1.html?7'; 

SELECT REVERSE(SUBSTRING((REVERSE(@myvar)), (CHARINDEX('?',REVERSE(@myvar))+1),500)) AS result ; 
GO 
0

В случае нескольких ? символов есть в значениях столбцов в UrlLink и если вы хотите, чтобы принять значение после последнего символа ?. Затем используйте комбинацию SUBSTRING и CHARINDEX.

Запрос

SELECT 
    [Id], 
    SUBSTRING([UrlLink], 1, 
    LEN([UrlLink]) - CHARINDEX('?', REVERSE([UrlLink]), 1)) AS [UrlLink] 
FROM [Products]; 

Demo

0
  • Простой и не подведет в случае, если у вас есть Urllink, который не содержит ?.
  • В случае нескольких ? все удалить с первых ? так как в этом он-лайн единственном ? со специальным значением.

select  id,left(Urllink,charindex('?',Urllink+'?')-1) 

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