presto中split函数报错Array subscript out of bounds(下标越界)

1、数据示例:

id cat_info

1 服饰/上衣/衬衫

2 服饰/其他

2、实现

select split('服饰/其他', '/')[3] as three_cat

报错:Array subscript out of bounds

正确用法:

select if(size(split(cat_info, '/'))>=3,split(cat_info, '/')[2] ,'') as three_cat

3、详细说明

3.1 hive用法

复制代码
SELECT 
    id,
    cat_info,
    split(cat_info, '/')[0] one_cat,
    split(cat_info, '/')[1] two_cat,
    if(size(split(cat_info, '/'))>=3,split(cat_info, '/')[2] ,'')three_cat

3.2 presto用法

复制代码
SELECT 
    id,
    cat_info,
    split(cat_info, '/')[1] one_cat,
    split(cat_info, '/')[2] two_cat,
    if(cardinality(split(cat_info, '/'))>=3,split(cat_info, '/')[3] ,'')three_cat

3.3 比较

计算数组长度的时候,hive和presto的函数不同

hive的size函数默认数组的下标从0开始

presto的cardinality函数默认数组的下标从1开始

相关推荐
zhuiQiuMX2 小时前
脉脉maimai面试死亡日记
数据仓库·sql·面试
GEEK零零七7 小时前
Leetcode 1070. 产品销售分析 III
sql·算法·leetcode
御控工业物联网9 小时前
御控网关如何实现MQTT、MODBUS、OPCUA、SQL、HTTP之间协议转换
数据库·sql·http
Code季风11 小时前
SQL关键字快速入门:CASE 实现条件逻辑
javascript·数据库·sql
kk在加油12 小时前
Mysql锁机制与优化实践以及MVCC底层原理剖析
数据库·sql·mysql
满昕欢喜21 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
JAVA学习通1 天前
Mybatis--动态SQL
sql·tomcat·mybatis
m0_623955661 天前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle
jnrjian1 天前
Oracle RAC环境 加错数据文件 的修复 归档非归档都没问题
sql·oracle
亚马逊云开发者2 天前
全景解读亚马逊云科技的 GenBI 解决方案:三大路径助力企业智能决策升级
sql·llm