是否可以在SQL查询中使用regexp(或其他东西,可能像CHARINDEX可能有帮助)删除部分字符串? 我使用MS SQL Server(最有可能是2008年)。
示例:
我的字符串类似于" [一些无用的信息] 字符串的有用部分"如果它们在一行中,我想删除括号中带有文本的部分。
答案 0 :(得分:3)
使用 REPLACE
例如:
UPDATE authors SET city = replace(city, 'To Remove', 'With BLACK or Whatever')
WHERE city LIKE 'Salt%'; // with where condition
答案 1 :(得分:2)
您可以使用PATINDEX功能。它不是一个完整的正则表达式实现,但你可以将它用于简单的事情。
<强> PATINDEX (Transact-SQL) 强>&GT;返回指定表达式中第一次出现模式的起始位置,如果未找到该模式,则返回所有有效文本和字符数据类型的零。
OR 您可以使用CLR通过完整的正则表达式实现来扩展SQL Server。
答案 2 :(得分:1)
SELECT * FROM temp where replace(replace(replace(url,'http://',''),'www.',''),'https://','')='"+url+"';
答案 3 :(得分:1)
您可以使用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)))))
,''
)
答案 4 :(得分:1)
最后帮助REPLACE,SUBSTRING和PATINDEX。
REPLACE(t.badString, Substring(t.badString , Patindex('%[%' , t.badString)+1 , Patindex('%]%' , t.badString)), '').
感谢所有人。