是否可以在SQL查詢中使用regexp(或其他的東西,可能類似於CHARINDEX可以提供幫助)刪除部分字符串? 我使用MS SQL Server(2008最有可能)。Transact SQL替換字符串的一部分
例子:
我有一個字符串「[一些無用的信息]串的有用的部分:」我想刪除的文字部分括號,如果他們都符合。
是否可以在SQL查詢中使用regexp(或其他的東西,可能類似於CHARINDEX可以提供幫助)刪除部分字符串? 我使用MS SQL Server(2008最有可能)。Transact SQL替換字符串的一部分
例子:
我有一個字符串「[一些無用的信息]串的有用的部分:」我想刪除的文字部分括號,如果他們都符合。
您可以使用PATINDEX功能。它不是一個完整的正則表達式實現,但你可以用它來做簡單的事情。
PATINDEX (Transact-SQL)>返回的圖案的第一次出現的起始位置以指定的表達,或零如果模式沒有發現,在所有有效的文本和字符數據類型。
或您可以使用CLR通過完整的正則表達式實現來擴展SQL Server。
SELECT * FROM temp where replace(replace(replace(url,'http://',''),'www.',''),'https://','')='"+url+"';
使用更換
例如:
UPDATE authors SET city = replace(city, 'To Remove', 'With BLACK or Whatever')
WHERE city LIKE 'Salt%'; // with where condition
您可以使用STUFF插入一個字符串到另一個字符串中。它會刪除開始位置第一個字符串中的指定長度的字符,然後將第二個字符串插入到開始位置的第一個字符串中。
例如,下面的代碼,替換5
與666666
:
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)))))
,''
)
最後幫助更換,SUBSTRING和PATINDEX。
REPLACE(t.badString, Substring(t.badString , Patindex('%[%' , t.badString)+1 , Patindex('%]%' , t.badString)), '').
謝謝大家。