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

Oracle中如何使用JSON_QUERY动态获取JSON对象的键名列表

解决方案

你当前使用的JSON_QUERY是用于提取JSON中的值数据的,要获取JSON对象的顶层键名列表,直接使用Oracle专门提供的JSON_KEYS函数即可(Oracle 12c R2及以上版本原生支持)。

基础实现(返回标准JSON格式键名数组)

SELECT JSON_KEYS('{a:100, b:200, c:300}') AS key_list
  FROM DUAL;

执行结果:

["a","b","c"]

自定义格式(去掉引号,符合你期望的[a,b,c]格式)

如果不需要标准JSON的字符串引号,可以搭配REPLACE函数处理:

SELECT REPLACE(REPLACE(JSON_KEYS('{a:100, b:200, c:300}'), '"', '')) AS key_list
  FROM DUAL;

执行结果:

[a,b,c]

低版本兼容方案(12c R2以下版本,通过JSON_TABLE拆分后聚合)

如果你的数据库版本不支持JSON_KEYS,可以用JSON_TABLE拆分键值对后聚合生成结果:

SELECT '[' || LISTAGG(j.key, ',') WITHIN GROUP (ORDER BY j.pos) || ']' AS key_list
FROM JSON_TABLE(
  '{a:100, b:200, c:300}',
  '$' COLUMNS (
    NESTED PATH '$.*' COLUMNS (
      pos FOR ORDINALITY,
      key VARCHAR2(100) PATH '$.key()'
    )
  )
) j;

内容的提问来源于stack exchange,提问作者samurai-jack07

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:54:02