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

DuckDB中JSONPath表达式$.*~的等效写法是什么?

DuckDB中JSONPath表达式$.*~的等效实现

你需要的$.*~是部分非标准JSONPath实现(如Jayway)中用于提取对象顶层键名的语法,但DuckDB遵循SQL/JSON路径标准,不支持该语法。以下是两种等效实现方式:

方法1:使用SQL/JSONPath标准的keys()函数

直接通过JSONPath的keys()方法获取顶层对象的所有键,返回结果与原需求完全一致:

SELECT j->'$.keys()' FROM example;

执行后返回:

["firstName", "lastName", "age", "address", "phoneNumbers"]

方法2:使用DuckDB内置JSON函数

通过json_each展开JSON对象的键值对,再用json_group_array聚合为键名数组:

SELECT (
  SELECT json_group_array(key) 
  FROM json_each(j)
) AS top_level_keys
FROM example;

该方法同样会返回包含所有顶层键的数组。

说明

  • $.*~的核心需求是提取JSON对象的顶层键名集合,上述两种方法都能满足该需求。
  • 优先选择方法1,因为它更简洁且符合SQL/JSON路径规范,性能也更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:51:11