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

如何使用JSON_VALUE查询嵌套数组对象中任意位置的指定street值

如何查询JSON数组中任意位置包含指定值的行(Oracle)

针对你的需求,有两种通用方法可以实现,不需要硬编码数组索引:

方法1:使用JSON_EXISTS直接检查匹配

JSON_EXISTS是Oracle专门用来验证JSON路径是否存在符合条件元素的函数,适合只需要判断存在性的场景:

SELECT * 
FROM MYTABLE 
WHERE JSON_EXISTS(myclob_column, '$.address[*].street?(@ == "200")');
  • $.address[*]:表示匹配address数组的所有元素
  • ?(@ == "200"):过滤条件,检查当前元素的street值等于'200'

方法2:使用JSON_TABLE展开数组后关联查询

如果需要同时查看匹配的具体street值,或者需要更复杂的筛选,可以用JSON_TABLE将数组拆成行,再和原表关联:

SELECT DISTINCT t.*
FROM MYTABLE t
JOIN JSON_TABLE(
    t.myclob_column,
    '$.address[*]'
    COLUMNS (
        street VARCHAR2(100) PATH '$.street'
    )
) jt ON jt.street = '200';
  • JSON_TABLE会把address数组的每个元素转换成一行记录,提取出street字段
  • 用DISTINCT是为了避免原表行重复(如果数组中有多个元素匹配'200')

注意:由于你的myclob_column是CLOB类型,Oracle的JSON函数原生支持对CLOB的解析,只要存储的JSON格式合法,不需要额外转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:15:01