如何在SQL Server中替换句子中特定单词而不替换子字符串

8
我想在一个句子中替换特定的单词,但不是在子字符串中。

例如:

DECLARE @i VARCHAR(250)
SET @i = 'MR JOHN NAMR is working from 3 days.'

PRINT REPLACE(@i, 'MR ', '') 

输出:

'JOHN NAis working from 3 days.'

我想将“MR”替换为空字符串,但是如果您注意到它也会从“NAMR”中替换掉“MR”。请提供一个解决方案。

可能是在SQL中替换字符串中第一次出现的子字符串的重复问题。 - P.Salmon
4
以上提到的帖子都不能被视为对这个问题的答案。发帖者希望替换每个(而不仅仅是第一个)出现的单词,前提是它不是另一个单词的子字符串。 - Giorgos Betsos
你使用的是哪个版本的SQL Server? - Giorgos Betsos
1个回答

7
您可以尝试以下查询。这里在开头和结尾先插入了一个空格,然后再去掉了这个空格。
DECLARE @i VARCHAR(250)
SET @i = 'MR JOHN NAMR is working from 3 days.'

SELECT rtrim(ltrim(Replace(replace(' '+@i+' ',' MR ','  '),
' MR ','  ')))

以下是输出内容:

JOHN NAMR已经工作了3天。

您可以在Demo Replace Word中找到实时演示。

移除空格以不考虑删除的单词间空格。查看演示 https://rextester.com/MZA81994 - Suraj Kumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接