我有一个包含几行和几列的MySQL表。
我想为所有行替换特定列中第二次出现的字符串。
此字符串有多次出现。 (最多10次,但我只想替换第二次出现的情况)
答案 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版本,并且适用于您。