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

在Presto中提取字符串时如何处理不同JSON格式?

解决方案

可以通过判断JSON的类型,分别处理数组和对象格式的提取结果,最终统一拼接成目标字符串:

SELECT
    CASE
        -- 处理JSON数组格式
        WHEN JSON_TYPE(JSON_EXTRACT(my_column, '$.my_column_extract')) = 'ARRAY' THEN
            ARRAY_JOIN(CAST(JSON_EXTRACT(my_column, '$.my_column_extract') AS ARRAY(VARCHAR)), ', ')
        -- 处理带数字键的JSON对象格式
        WHEN JSON_TYPE(JSON_EXTRACT(my_column, '$.my_column_extract')) = 'OBJECT' THEN
            ARRAY_JOIN(CAST(JSON_OBJECT_VALUES(JSON_EXTRACT(my_column, '$.my_column_extract')) AS ARRAY(VARCHAR)), ', ')
    END AS target_string
FROM your_table;

关键函数说明:

  • JSON_TYPE:判断提取出的JSON数据是数组(ARRAY)还是对象(OBJECT),以此实现分支处理
  • JSON_OBJECT_VALUES:针对JSON对象,提取所有键对应的值并组成JSON数组,刚好匹配我们需要的元素集合
  • ARRAY_JOIN:将数组元素用指定分隔符(, )拼接成目标格式的字符串

这样不管提取结果是数组还是数字键对象,都能得到你想要的逗号分隔字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:15:40