【问题标题】:MySQL : replace occurence of a string in field except first oneMySQL:替换字段中出现的字符串,第一个字符串除外
【发布时间】:2017-02-08 10:39:22
【问题描述】:

我想更新一列的所有字段,其中很多都有所需的字符串,但我希望这个字符串只在每个字段中出现一次,例如: "MyString OtherString MyString AnotherString AndAnother MyString"

"MyString OtherString AnotherString AndAnother"

您对如何实现这一点有任何想法吗?

【问题讨论】:

  • 现在为您添加了一个更好的解决方案,它将处理“MyString”不是该字段中的第一个术语的情况。我希望你喜欢它!

标签: mysql replace find-occurrences


【解决方案1】:

如果“MyString”总是作为字段中的第一个术语出现,这将起作用:

update MyTable set MyField = replace(MyField, ' MyString','')

上面的关键点是,我们查找出现的“MyString”带有前导空格,因此该字段开头的第一个出现将被忽略。

但是,我的猜测是这可能太脆弱了 - 如果“MyString”的第一次出现不在字段的开头怎么办?

在后一种情况下,您需要以下内容:

UPDATE 
    MyTable 
SET 
    MyField = 
    CONCAT(
        LEFT(MyField,INSTR(MyField,'MyString') + LENGTH('MyString')), 
        REPLACE(RIGHT(MyField, LENGTH(MyField) - (INSTR(MyField,'MyString') + LENGTH('MyString'))), 'MyString','') 
    )

这样做是将字段分成两部分,第一部分直到并包括第一次出现的“MyString”,第二部分替换它的所有进一步出现。

【讨论】:

  • 很高兴! . . .
猜你喜欢
  • 2020-08-05
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-19
  • 2018-10-05
  • 2014-03-21
  • 2020-05-22
相关资源
最近更新 更多