是否可以在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)), '').
谢谢大家。