使用REGEXP_REPLACE更新时替换内容变为字面正则模式的问题
解决MariaDB中REGEXP_REPLACE捕获组引用失效的问题
这个问题核心是MariaDB与MySQL的REGEXP_REPLACE捕获组引用语法存在差异:
- 你测试的MySQL 8.0环境支持用
$1、$2格式引用捕获组; - 但MariaDB中,捕获组需要用
\\1、\\2(SQL里单个反斜杠需转义,因此用双反斜杠)来引用。
只需要把更新语句里的$1改成\\1即可,修改后的SQL如下:
UPDATE blog_posts SET blog_content = regexp_replace(blog_content, 'href="[^#"]+#h_(.+)"', 'href="#h_\\1"');
补充说明:如果你的MariaDB版本是10.5及以上,也可以开启PCRE正则模式来兼容$N写法,但上述修改是最通用的兼容方案,适配所有版本的MariaDB。
内容的提问来源于stack exchange,提问作者tearswep
相关产品推荐
相关产品推荐

