是否可以使用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/