我试图在主字符串中找到一个字符串并将其删除。
示例:
@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) ,
'');
这部分有效。它会删除搜索到的文本,但也会删除文本的末尾。
答案 0 :(得分:4)
STUFF
的第三个参数是从第二个参数的起点开始要替换的字符数。
SELECT
STUFF(@main_text,
CHARINDEX('//', @main_text),
CHARINDEX('\\', @main_text) - charindex('//', @main_text) + 2,
'')
FROM yourTable
WHERE @main_text LIKE '%//%\\%'b
text // blah \\
6 14
我们要删除blah
和删除标记。从CHARINDEX
返回的标记位置的差异为8,但我们要删除10个字符,因此STUFF
调用中的+2。
我们可能会使用WHERE
子句来限制查询仅限定具有替换标记的记录。您可以将上述查询放入CTE,然后更新它。