mysql regexp_replace 有更新
mysql regexp_replace with update
我刚刚将 MySQL 升级到 8.0.11 以便能够使用 regexp_replace。它在 select 语句中工作正常,但是当我在更新中使用相同的语句时,我得到奇怪的结果。这是一个简化的示例:如果我有一个包含“567890”的字段,并且我将其更新为:
update test set field = regexp_replace(field, '[7]', 'z')
而不是“56z890”,字段值设置为“56”。
这一定是一个错误,但与此同时,是否有任何解决方法可以让它按预期工作?谢谢
它看起来像是 REGEXP_REPLACE function. In MariaDB it works as expected, see dbfiddle 的错误。
我会尝试在 bugs.mysql.com. Bug was already reported, Bug #90803 regexp_replace accumulating result and Bug #90870 REGEXP_REPLACE truncate UPDATE 中报告错误。
解决方法是:
UPDATE `test`
SET `field` = CAST(REGEXP_REPLACE(`field`, '[7]', 'z') AS CHAR);
见dbfiddle。
我正在使用 Apache 版本 (PHP) 5.6 和 MySQL 版本 10.1.25-Maria DB 本地主机服务器。
我试过以下查询,
UPDATE `table_name`
SET
column_name = REGEXP_REPLACE(column_name,regex_pattern_to_find,replaceable_text)
WHERE
column_name RLIKE 'regex_pattern_to_find'
它对我来说很好用。希望这有帮助。
我刚刚将 MySQL 升级到 8.0.11 以便能够使用 regexp_replace。它在 select 语句中工作正常,但是当我在更新中使用相同的语句时,我得到奇怪的结果。这是一个简化的示例:如果我有一个包含“567890”的字段,并且我将其更新为:
update test set field = regexp_replace(field, '[7]', 'z')
而不是“56z890”,字段值设置为“56”。
这一定是一个错误,但与此同时,是否有任何解决方法可以让它按预期工作?谢谢
它看起来像是 REGEXP_REPLACE function. In MariaDB it works as expected, see dbfiddle 的错误。
我会尝试在 bugs.mysql.com. Bug was already reported, Bug #90803 regexp_replace accumulating result and Bug #90870 REGEXP_REPLACE truncate UPDATE 中报告错误。
解决方法是:
UPDATE `test`
SET `field` = CAST(REGEXP_REPLACE(`field`, '[7]', 'z') AS CHAR);
见dbfiddle。
我正在使用 Apache 版本 (PHP) 5.6 和 MySQL 版本 10.1.25-Maria DB 本地主机服务器。
我试过以下查询,
UPDATE `table_name`
SET
column_name = REGEXP_REPLACE(column_name,regex_pattern_to_find,replaceable_text)
WHERE
column_name RLIKE 'regex_pattern_to_find'
它对我来说很好用。希望这有帮助。