我刚刚将mysql升级到8.0.11,以便能够使用regexp\u替换。它在select语句中运行良好,但当我在更新中使用它时,会得到奇怪的结果。下面是一个简化的示例:如果我有一个字段为“567890”,并且我用以下内容更新它:
update test set field = regexp_replace(field, '[7]', 'z')
字段值设置为“56”,而不是“56z890”。
这一定是一个bug,但在此期间,是否有任何解决方法使其按预期工作?谢谢。
我刚刚将mysql升级到8.0.11,以便能够使用regexp\u替换。它在select语句中运行良好,但当我在更新中使用它时,会得到奇怪的结果。下面是一个简化的示例:如果我有一个字段为“567890”,并且我用以下内容更新它:
update test set field = regexp_replace(field, '[7]', 'z')
字段值设置为“56”,而不是“56z890”。
这一定是一个bug,但在此期间,是否有任何解决方法使其按预期工作?谢谢。
2条答案
按热度按时间eimct9ow1#
我使用的是apacheversion(php)5.6和mysql version 10.1.25-mariadb localhost服务器。
我尝试了以下查询,
对我来说效果不错。希望这有帮助。
kwvwclae2#
它看起来像是regexp\u replace函数的一个bug。在mariadb中,它按预期工作,请参见dbfiddle。
我将尝试在bugs.mysql.com中报告错误。已报告错误,错误#90803 regexpŦu替换累积结果,错误Ŧ90870 regexpŦu替换截断更新。
解决方法是:
见小提琴。