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

如何在含JSON字段的Oracle表中实现多参数动态JSON数据查询?

Oracle JSON文档多条件查询扩展方案

原单条件查询通过JSON_TRANSFORM结合KEEP操作符实现,核心代码如下:

SELECT DISTINCT
  D.JSONDOC DOC,
  JSON_TRANSFORM(D.JSONDOC, KEEP  '$.* ?(@ like "S104%")') AS FILTERED_JSONDOC
FROM master_data D

要扩展为多条件查询,只需在KEEP的过滤表达式中使用逻辑运算符AND/OR组合多个匹配规则:

1. 多条件同时满足(AND)

如果需要保留同时匹配多个规则的JSON字段,比如既以"S104"开头,又包含"ACTIVE"关键词,可修改为:

SELECT DISTINCT
  D.JSONDOC DOC,
  JSON_TRANSFORM(D.JSONDOC, KEEP  '$.* ?(@ like "S104%" && @ like "%ACTIVE%")') AS FILTERED_JSONDOC
FROM master_data D

2. 满足任一条件(OR)

如果需要保留匹配任意一个规则的JSON字段,比如以"S104"开头或者以"E205"开头,可修改为:

SELECT DISTINCT
  D.JSONDOC DOC,
  JSON_TRANSFORM(D.JSONDOC, KEEP  '$.* ?(@ like "S104%" || @ like "E205%")') AS FILTERED_JSONDOC
FROM master_data D

说明

  • 使用&&表示逻辑“与”,||表示逻辑“或”,符合Oracle JSON路径表达式的语法规范
  • $.*表示遍历JSON文档下的所有顶层字段,可根据实际需求调整路径(比如指定特定字段路径$.info.*)
  • 保留DISTINCT用于去重,避免重复返回相同的JSON文档

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:40:06