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

Oracle使用json_objectagg时如何过滤JSON数组中符合条件的条目

解决方法

你只需要在原有代码的基础上做两处调整:

  • 在JSON_TABLE的列定义中新增city字段的解析规则
  • 增加WHERE条件过滤符合要求的城市记录

修改后的完整代码如下:

select json_objectagg(key "name" value "age") into v_patch
from(
   with t(dta) as ( select json_query(:data, '$') from dual )
   select "name", "age" from t
   cross join json_table(dta,
      '$' columns(nested path '$[*]'
         columns(
            "name" varchar2(1024) path '$.name',
            "age"  varchar2(1024) path '$.age',
            "city" varchar2(1024) path '$.city' -- 新增city字段解析
         )
      )
   )
   where "city" in ('Bigville', 'Smallville') -- 过滤指定城市
);

逻辑说明

  • 新增的city字段解析会从原JSON数组的每个对象中提取城市信息,供过滤使用
  • WHERE条件直接筛选出城市为Bigville或Smallville的记录,只有符合条件的记录才会被json_objectagg聚合成最终的JSON对象
    运行后生成的结果就是你需要的{"Tony": "20", "Lucas": "40"}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:07