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

Oracle 19c如何从CLOB格式JSON的未知路径提取指定键值

在Oracle 19c中提取JSON任意位置的指定键值

要提取JSON结构中任意位置的指定键(比如name)的值,Oracle 19c中JSON_TABLE是最适合的工具——JSON_VALUE/JSON_QUERY默认仅返回第一个匹配结果,而JSON_TABLE可以把所有匹配的键值展开为行数据,完全满足你“不知道确切路径,只按键名提取”的需求。

示例SQL实现

假设你的表名为json_data_table,存储JSON的CLOB列名为json_content,执行以下SQL即可获取所有name键的值:

SELECT jt.name_val
FROM json_data_table,
     JSON_TABLE(
         json_content,
         '$..name' COLUMNS (
             name_val VARCHAR2(100) PATH '$'
         )
     ) jt;

代码说明

  • $..name:JSON路径表达式,..表示递归遍历JSON的所有层级,匹配所有名为name的键;
  • JSON_TABLE函数将每个匹配的name值映射为单独一行,PATH '$'表示取当前匹配键对应的具体值;
  • 针对你提供的示例JSON,执行后会返回两行结果:John Doe和Jane Doe。

扩展:获取值的来源路径

如果需要同时知道每个值在JSON中的完整路径,可以在JSON_TABLE中额外添加路径列:

SELECT jt.name_val, jt.value_path
FROM json_data_table,
     JSON_TABLE(
         json_content,
         '$..name' COLUMNS (
             name_val VARCHAR2(100) PATH '$',
             value_path VARCHAR2(200) PATH '$.'
         )
     ) jt;

执行后会返回:

name_valvalue_path
John Doe$.user.name
Jane Doe$.other.info.name

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:30:03