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

使用regexp_substr匹配{}间内容报Missing }错误该如何解决

报错原因

  1. 在POSIX正则规则中,{是表示重复次数量词的特殊起始字符(例如a{2,4}代表匹配a连续出现2到4次),你直接写\{时,部分数据库的正则解析器没有将其识别为字面量字符,反而认为你要定义量词表达式,但缺少对应的}闭合,因此抛出该错误。
  2. 你原写法中的.*属于贪婪匹配,就算正则不报错,也会从第一个{一直匹配到整个字符串的最后一个},只能得到一个包含所有内容的结果,无法拆分出多个独立的JSON片段。

正确正则写法

匹配单个{}包裹内容的正则为 \\{[^}]*\\},规则说明:

  • 双反斜杠\\是SQL语句中的转义标识,用来告诉解析器后续的{、}是普通字面量字符,不是正则特殊符号
  • [^}]* 匹配除}之外的任意字符0次或多次,天然避免了贪婪匹配跨}的问题,刚好可以匹配单个{}内的所有内容

拆分多JSON的SQL示例(以Oracle为例)

如果需要一次性拆分出字段内所有的JSON片段,可以用层级查询配合正则实现:

select regexp_substr(jsons_arrays,'\\{[^}]*\\}',1,level) as single_json
from 你的表名
connect by level <= regexp_count(jsons_arrays,'\\{[^}]*\\}')
and prior rowid = rowid
and prior sys_guid() is not null;

其他数据库可对应调整递归逻辑,正则部分通用。

验证效果

用你提供的示例值{'a': '20', 'b': '30'}, {'b': '1'}, {'a': '112', 'b': '34'}测试,会依次返回3个独立的JSON片段,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:21:02