Athena/Presto中如何将array(varchar)类型转换为varchar类型
Athena/Presto实现array(varchar)转varchar的方案
Presto/Athena不支持直接通过cast函数将array(varchar)类型强制转换为varchar,可根据使用需求选择以下两种方案:
方案1:自定义分隔符拼接数组元素(推荐大多数场景使用)
使用内置函数array_join,可灵活指定分隔符拼接数组内所有元素,还支持自定义空元素的替换值:
- 基础语法:
array_join(目标数组字段, 分隔符, [空值替换内容]) - 调用示例:
将col_1的元素用逗号拼接的查询语句:select array_join(col_1, ',') as col_1_str from table
针对示例数据[hello_world],返回结果为字符串hello_world。
如果数组内存在空值,希望空值展示为N/A,可使用语句:select array_join(col_1, ',', 'N/A') as col_1_str from table
方案2:保留数组原生的方括号展示格式
如果需要输出和直接查询数组字段一致的带方括号格式(例如示例数据返回[hello_world]格式的字符串),可通过JSON格式转换实现:
- 调用示例:
select trim('"' from json_format(cast(col_1 as json))) as col_1_str from table
针对示例数据[hello_world],返回结果为字符串[hello_world]。
内容的提问来源于stack exchange,提问作者Sandro270
相关产品推荐
相关产品推荐

