Sql server 使用ms sql server替换整个word“;替换“;

Sql server 使用ms sql server替换整个word“;替换“;,sql-server,Sql Server,我希望输出保持不变,因为没有像“Good”这样的单词。 但输出是“BetterLuck Markand” 我希望MS SQL Replace函数比较确切的单词,然后替换它。 如何执行此操作?在字符串的开头和结尾追加空白,然后将的“Good”替换为的“Better”。最后使用Ltrim和Rtrim删除字符串开头和结尾的空白 declare @str varchar(50)='GoodLuck Markand' declare @replacedString varchar(50) set @rep

我希望输出保持不变,因为没有像“Good”这样的单词。 但输出是“BetterLuck Markand”

我希望MS SQL Replace函数比较确切的单词,然后替换它。
如何执行此操作?

在字符串的开头和结尾追加
空白
,然后将
的“Good”替换为
的“Better”
。最后使用
Ltrim
Rtrim
删除字符串开头和结尾的空白

declare @str varchar(50)='GoodLuck Markand'
declare @replacedString varchar(50)
set @replacedString = replace(@str,'Good','Better')
print @replacedString

根据MSDN,这似乎不是替换的功能;您必须在被搜索和替换的单词的两侧使用give空格

DECLARE @str VARCHAR(50)='Good Luck Good MarkandGood Good'
DECLARE @replacedString VARCHAR(50)

SELECT rtrim(ltrim(Replace(replace(' '+@str+' ',' Good ',' Better '),
' Good ',' Better ')))
用另一个字符串值替换指定字符串值的所有匹配项。

提及

语法

replace(@str,' Good ',' Better ')
参数

字符串表达式 是要搜索的字符串表达式。字符串表达式可以是字符或二进制数据类型

字符串\u模式是要找到的子字符串。字符串模式可以是字符或二进制数据类型。 字符串\u模式不能是空字符串(“”),并且不能超过页面上的最大字节数。

字符串替换 是替换字符串。字符串替换可以是字符或二进制数据类型。

尝试以下方法:(按预期工作)

输入:

祝你好运祝你好运

结果:


祝你好运,祝你好运

它正常工作了。@NoDisplayName。的确如此。但是我想要一个功能来比较整个单词,然后替换它。投票关闭-这不是替换的工作方式,你没有表现出自己编写函数的努力。基本上,您可以将stackoverflow滥用为一种代码编写服务,而无需您的任何努力。我会给出输入“Good Good Luck Good MarkandGood Good Good”,而得到的输出是“Better Good Luck Better MarkandGood Better”。检查第二个good是否未被替换。请尝试使用此字符串“good GoodLuck good markand good good”。尝试使用此字符串“GoodMarkAnd”。“这没什么关系。”库马尔,再次感谢你。在这里,我再次修复了这些洞。重新检查。
REPLACE ( string_expression , string_pattern , string_replacement )
declare @str varchar(500)
set @str = 'Good Good Good Good Good Good Good Good Luck Good GoodLuck MarkAndGood GoodMarkAnd MarkAndGood Good'
declare @replacedString varchar(500)
SET @replacedString = replace(@str,' Good ',' Better ')

SET @replacedString = replace(@replacedString,' Good ',' Better ')

SET @replacedString = CASE WHEN CHARINDEX('Good ', @replacedString) = 1 THEN 
                        STUFF(@replacedString, 1, Len('Good'), 'Better')
                      ELSE @replacedString END

SELECT CASE WHEN CHARINDEX(REVERSE(' Good'), REVERSE(@replacedString)) = 1 THEN 
                             Reverse(STUFF(Reverse(@replacedString), CHARINDEX(Reverse(' Good'), 
                             Reverse(@replacedString)), Len(' Good'), Reverse(' Better')))
                      ELSE @replacedString END AS A