2014-07-10 37 views
1

是否可以在SQL查詢中使用regexp(或其他的東西,可能類似於CHARINDEX可以提供幫助)刪除部分字符串? 我使用MS SQL Server(2008最有可能)。Transact SQL替換字符串的一部分

例子:
我有一個字符串「[一些無用的信息]的有用的部分:」我想刪除的文字部分括號,如果他們都符合。

回答

2

您可以使用PATINDEX功能。它不是一個完整的正則表達式實現,但你可以用它來做簡單的事情。

PATINDEX (Transact-SQL)>返回的圖案的第一次出現的起始位置以指定的表達,或零如果模式沒有發現,在所有有效的文本和字符數據類型。

您可以使用CLR通過完整的正則表達式實現來擴展SQL Server。

1
SELECT * FROM temp where replace(replace(replace(url,'http://',''),'www.',''),'https://','')='"+url+"'; 
2

使用更換

例如:

UPDATE authors SET city = replace(city, 'To Remove', 'With BLACK or Whatever') 
    WHERE city LIKE 'Salt%'; // with where condition 
1

您可以使用STUFF插入一個字符串到另一個字符串中。它會刪除開始位置第一個字符串中的指定長度的字符,然後將第二個字符串插入到開始位置的第一個字符串中。

例如,下面的代碼,替換5666666

DECLARE @Variable NVARCHAR(MAX) = '12345678910' 

SELECT STUFF(@Variable, 5, 1, '666666') 

注意的是,第二個參數是不是一個字符串,它是一個position,你可以使用CHARINDEX計算其位置例。


這是您的情況:

DECLARE @Variable NVARCHAR(MAX) = '[some useless info] Useful part of string' 

SELECT STUFF(
       @Variable 
       ,CHARINDEX('[', @Variable) 
       ,LEN(SUBSTRING(@Variable, CHARINDEX('[', @Variable), CHARINDEX(']', @Variable) - LEN(SUBSTRING(@Variable, 0, CHARINDEX('[', @Variable))))) 
       ,'' 
      ) 
1

最後幫助更換,SUBSTRING和PATINDEX。

REPLACE(t.badString, Substring(t.badString , Patindex('%[%' , t.badString)+1 , Patindex('%]%' , t.badString)), ''). 

謝謝大家。