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

Oracle SQL如何按条件解析JSON数组中对应字段的值?

根据条件从JSON数组中提取对应值的解决方案

不同数据库有不同的JSON处理函数,以下是主流数据库的实现方式:

SQL Server

使用OPENJSON将JSON数组拆分为行,再通过筛选条件匹配目标项:

SELECT j.subkey2
FROM table1
CROSS APPLY OPENJSON(column1, '$.key1')
WITH (
    subkey1 NVARCHAR(100) '$.subkey1',
    subkey2 NVARCHAR(100) '$.subkey2'
) AS j
WHERE j.subkey1 = 'interestedvalue1';

OPENJSON会解析key1对应的数组,WITH子句定义要提取的字段,最后通过WHERE筛选出subkey1匹配的行,即可得到对应的subkey2。

MySQL (8.0+)

利用JSON_TABLE函数将JSON数组转换为关系型临时表,再筛选目标值:

SELECT j.subkey2
FROM table1,
     JSON_TABLE(
         column1,
         '$.key1[*]' COLUMNS (
             subkey1 VARCHAR(100) PATH '$.subkey1',
             subkey2 VARCHAR(100) PATH '$.subkey2'
         )
     ) AS j
WHERE j.subkey1 = 'interestedvalue1';

JSON_TABLE遍历数组中的每个元素,将指定的JSON键映射为列,后续通过常规的WHERE条件过滤即可。

PostgreSQL

通过jsonb_array_elements(或json_array_elements)拆分数组,再筛选匹配项:

SELECT (j->>'subkey2') AS subkey2
FROM table1,
     jsonb_array_elements(column1::jsonb->'key1') AS j
WHERE (j->>'subkey1') = 'interestedvalue1';

先将列转换为jsonb类型,用jsonb_array_elements把数组拆成独立的JSON对象,再通过->>提取字符串值进行筛选,最终得到目标subkey2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:20:02