在MySQL中替换字符串的第n次出现

时间:2019-06-04 21:31:58

标签: mysql replace

我有一个包含几行和几列的MySQL表。

我想为所有行替换特定列中第二次出现的字符串。

此字符串有多次出现。 (最多10次,但我只想替换第二次出现的情况)

1 个答案:

答案 0 :(得分:1)

在MySQLv8.0中,您可以使用REGEXP_REPLACE()

https://dev.mysql.com/doc/refman/8.0/en/regexp.html#function_regexp-replace

  

REGEXP_REPLACE(expr,pat,repl [,pos [,出现[,match_type]]])

因此,如果您要从位置1开始搜索并仅替换第二次出现的匹配项,则可以使用1,2作为最后两个选项:

UPDATE `table` SET `field`=REGEXP_REPLACE(`field`,'search_string','replacement_string',1, 2);

注意:对于MySql版本:8.0.11,存在一个错误报告,该报告已在8.0.12中修复。

https://bugs.mysql.com/bug.php?id=90870

在生产测试中使用之前,您具有正确的MySql版本,并且适用于您。