在主字符串中查找并替换字符串

时间:2018-04-05 10:02:21

标签: tsql

我试图在主字符串中找到一个字符串并将其删除。

示例:

@Main_text = 'some text some text... // remove text remove text \\ some text some text'

我想要的是删除以下文字:

// remove string remove string \\ of the main text

我尝试了什么

declare @main_text varchar(255) = 'some text some text... // remove text remove text \\ some text some text'

SELECT STUFF(@main_text, 
         charindex('//', @main_text), 
         charindex('\\', @main_text) , 
   ''); 

这部分有效。它会删除搜索到的文本,但也会删除文本的末尾。

1 个答案:

答案 0 :(得分:4)

STUFF的第三个参数是从第二个参数的起点开始要替换的字符数。

SELECT
    STUFF(@main_text, 
        CHARINDEX('//', @main_text), 
        CHARINDEX('\\', @main_text) - charindex('//', @main_text) + 2, 
        '')
FROM yourTable
WHERE @main_text LIKE '%//%\\%'b

Demo

 text // blah \\
      6       14

我们要删除blah 删除标记。从CHARINDEX返回的标记位置的差异为8,但我们要删除10个字符,因此STUFF调用中的+2。

我们可能会使用WHERE子句来限制查询仅限定具有替换标记的记录。您可以将上述查询放入CTE,然后更新它。