You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB使用REGEXP_REPLACE时替换字符串含分号报错如何处理?

问题场景

处理新闻文章内嵌Youtube视频时,需要将旧的<object> Flash HTML标签替换为<iframe>标签。执行替换操作时发现,当替换字符串中包含分号;时,即使对分号做转义处理,数据库仍然会抛出语法错误。

问题SQL代码

UPDATE 
  `news_items` 
SET 
  `content` = REGEXP_REPLACE(content, 
                '(?sm)&lt;object.*?width\=&quot;([0-9]+)&quot;.*?height\=&quot;([0-9]+)&quot;.*?value\=&quot;((http://|https://).*?)&quot;.*&lt;\/object&gt;', 
                '&lt;iframe width=&quot;\\1&quot; height=&quot;\\2&quot; src=&quot;\\3&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen&gt;&lt;\/iframe&gt;')
WHERE 
  ID = 9551;

报错触发位置为allow=&quot;accelerometer;处。

解决方案

该报错的根本原因是SQL客户端默认将分号;识别为单条SQL语句的结束标记,因此会在替换字符串内第一个分号的位置提前截断语句,导致语法不完整。
无需对替换字符串内的分号做额外转义,通过临时修改SQL语句分隔符即可解决:

  • 首先执行语句将SQL分隔符临时修改为%%(可替换为任意不会出现在当前SQL语句中的特殊字符组合)
  • 执行上述UPDATE替换语句
  • 最后将SQL分隔符改回默认的;即可

内容的提问来源于stack exchange,提问作者Nique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:42:01