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

如何在Presto中提取嵌套JSON字符串中的所有id值

提取JSON中所有id值的解决方案

由于你的JSON结构是顶层为对象(键为"0","1","3"),而非数组,无法直接用数组通配符提取所有id,需要先拆分顶层键再逐个提取,以下是主流SQL引擎的实现方式:

BigQuery(适配你当前使用的JSON_EXTRACT_SCALAR函数)

SELECT 
  JSON_EXTRACT_SCALAR(api_response, CONCAT('$.', obj_key, '.id')) AS extract_id
FROM 
  your_table,
  UNNEST(JSON_OBJECT_KEYS(api_response)) AS obj_key;
  • 逻辑:JSON_OBJECT_KEYS(api_response)获取所有顶层键("0","1","3"),UNNEST将这些键拆分为单独行,再通过CONCAT拼接每个子对象的路径,逐个提取id。

MySQL

使用JSON_TABLE将JSON对象转换为关系表:

SELECT jt.extract_id
FROM your_table,
     JSON_TABLE(
       JSON_KEYS(api_response),
       '$[*]' COLUMNS(
         obj_key VARCHAR(10) PATH '$',
         extract_id INT PATH CONCAT('$.', obj_key, '.id')
       )
     ) jt;

PostgreSQL

借助jsonb_each拆分JSON对象的键值对:

SELECT (value ->> 'id')::INT AS extract_id
FROM your_table,
     jsonb_each(api_response::jsonb);
  • 逻辑:jsonb_each将JSON对象拆分为(key, value)行,直接从每个value中提取id字段并转换为整数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:07:37