是否可以使用replace函数替换以空格分隔的字符串的一部分?

例如如果我具有以下字符串“ 123456 456 789”,并想用“ XXXXX”替换第二次出现的“ 456”。

我尝试使用以下方法:

UPDATE table
set column = REPLACE(column,'456','xxxxx')
Where.......


问题在于它也将替代首次出现的“ 456”。我无法仅将replace语句中的模式更改为456,因为456可能出现在单元格的开头或结尾。有人有想法吗?

最佳答案

使用REGEXP_REPLACE执行此操作:

set column = REGEXP_REPLACE(column,'[[:<:]]456[[:>:]]','xxxxx')


regex语法添加单词定界符[[:<:]][[:>:]](在字符串的开头和结尾以及在regex单词\w和“ not words” \W之间匹配)。

注意:正则表达式在语法和逻辑上是正确的,但以上代码未经测试

关于mysql - MYSQL替换空格分隔的字符串的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33996838/

10-10 19:05