【问题标题】:Replace whole word using ms sql server "replace"使用 ms sql server "replace" 替换整个单词
【发布时间】:2023-03-04 22:12:02
【问题描述】:
declare @str varchar(50)='GoodLuck Markand'
declare @replacedString varchar(50)
set @replacedString = replace(@str,'Good','Better')
print @replacedString

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

我希望 MS SQL 替换功能比较确切的单词,然后替换它。 我该怎么做?

【问题讨论】:

  • 一切正常。
  • @NoDisplayName。它的确是。但我想要一个功能来比较整个单词然后替换它。
  • 投票关闭 - 这不是替换的工作方式,您自己编写函数也没有表现出任何努力。基本上,您将 stackoverflow 用作代码编写服务,而无需您付出任何努力。

标签: sql-server


【解决方案1】:

试试这个:(按预期工作)

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

输入:

祝你好运祝你好运

结果:

好运好运好运好运

【讨论】:

  • 试试这个字符串'Good GoodLuck Good MarkandGood Good'。
  • 试试这个字符串'GoodMarkAnd'。它什么也没给。
  • @Kumar,再次感谢。在这里,我再次修复了这些孔。重新检查。
【解决方案2】:

在字符串的开头和结尾追加empty space,然后将' Good ' 替换为' Better '。最后用LtrimRtrim去掉字符串开头和结尾的空格

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

SELECT rtrim(ltrim(Replace(replace(' '+@str+' ',' Good ',' Better '),
' Good ',' Better ')))

【讨论】:

  • 我输入“Good Good Luck Good MarkandGood Good”,得到的输出是“Better Good Luck Better MarkandGood Good Better”。检查第二个好没有更换。
【解决方案3】:

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

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

用另一个字符串值替换所有出现的指定字符串值。

参考MSDN

语法

REPLACE ( string_expression , string_pattern , string_replacement )

参数

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

string_pattern 是要查找的子字符串。 string_pattern 可以是字符或二进制数据类型。 string_pattern 不能为空字符串 (''),并且不得超过适合页面的最大字节数。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2019-12-30
    • 1970-01-01
    相关资源
    最近更新 更多