2016-11-21 102 views
0

在我的SQL Server表Products,我有一個看起來像這樣的值的列UrlLink刪除字符串

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列在表中刪除查詢字符串的一部分我的查詢,您需要在UPDATE語句中使用LeftCharIndex

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

感謝@Colin麥凱! –

2

使用leftcharindex應該工作:

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列中的值,如果你想最後?符號後取值。然後使用SUBSTRINGCHARINDEX的組合。

查詢

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

Demo

0
  • 簡單的情況下,不會失敗你有一個Urllink不包含?
  • 如果有多個?將刪除第一個?中的所有內容,因爲在URL中,這是唯一具有特殊意義的?

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

from  Products