2014-07-10 13 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)), ''). 

谢谢大家。