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

Presto SQL如何提取嵌套JSON结构中details字段的可读文本

Presto SQL提取动态键嵌套JSON中details字段的解决方案

错误原因

你原查询SELECT json_extract_scalar(content, '$.details') FROM table不生效,核心原因是details字段不在JSON根节点下,而是嵌套在顶层动态UUID键对应的子对象中,同时details内部的键也是动态UUID,无法直接写死固定路径匹配。

解决方案

方案1:通配符路径写法(适用单details条目场景)

如果每个details对象下仅存在1个文本值,可以直接用JSON路径通配符匹配所有动态键:

SELECT 
    json_extract_scalar(content, '$.*.details.*') AS detail_text
FROM 
    your_table

路径说明:$代表JSON根节点,.*匹配层级下所有任意键,依次匹配顶层动态UUID、details下的动态UUID,最终拿到对应的文本值。
注意:如果单个JSON中存在多个details条目,该写法仅返回第一个匹配到的值

方案2:UNNEST炸开写法(适用多details条目场景)

如果需要提取JSON中所有details下的文本值,转成多行返回,可以通过转MAP+炸开的方式实现:

SELECT 
    detail_value
FROM 
    your_table,
    -- 解析顶层JSON为MAP,炸开所有顶层UUID对应的子对象
    UNNEST(MAP_VALUES(CAST(json_parse(content) AS MAP<VARCHAR, JSON>))) AS top_obj,
    -- 提取子对象中details字段,解析为MAP后炸开所有取值
    UNNEST(MAP_VALUES(CAST(json_extract(top_obj, '$.details') AS MAP<VARCHAR, VARCHAR>))) AS detail_value

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:05