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

Trino/Presto中如何将JSON类型数组转换为SQL原生数组

Trino/Presto中JSON数组转原生SQL数组方案

完全可以通过引擎内置函数实现,转换结果和你手动声明的array['b', 'a', 'c', 'b']类型、元素顺序、重复值完全一致,不需要额外开发自定义函数。

兼容全版本的通用写法

所有主流Presto版本、Trino 3.x及以上版本都支持该写法,先用json_parse把JSON格式的字符串解析为引擎原生JSON类型,再强制转换为对应类型的SQL数组即可:

-- 转换JSON字符串为varchar类型的原生数组
SELECT CAST(json_parse('["b", "a", "b", "c"]') AS array(varchar));

如果JSON数组内存储的是其他类型元素,只需要修改数组的元素类型声明即可,比如存储整数时写CAST(json_parse('[1,2,3]') AS array(integer))。

高版本简化写法

Trino 358及以上、Presto 0.279及以上版本提供了更便捷的from_json反序列化函数,可以直接传入JSON字符串和目标类型完成转换,不需要嵌套json_parse:

SELECT from_json('["b", "a", "b", "c"]', 'array(varchar)');

等价性验证

执行如下语句可以验证转换结果和你期望的手动声明数组完全一致,返回结果为true:

SELECT CAST(json_parse('["b", "a", "b", "c"]') AS array(varchar)) = array['b', 'a', 'b', 'c'] AS array_equals;

注意:上述两种转换方式都会严格保留JSON数组中的元素顺序、重复元素,不会自动做排序、去重处理,完全匹配预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:21:45