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开始

相关推荐
kk在加油23 分钟前
Mysql锁机制与优化实践以及MVCC底层原理剖析
数据库·sql·mysql
满昕欢喜10 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
JAVA学习通13 小时前
Mybatis--动态SQL
sql·tomcat·mybatis
m0_6239556617 小时前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle
jnrjian19 小时前
Oracle RAC环境 加错数据文件 的修复 归档非归档都没问题
sql·oracle
亚马逊云开发者1 天前
全景解读亚马逊云科技的 GenBI 解决方案:三大路径助力企业智能决策升级
sql·llm
双力臂4041 天前
MyBatis动态SQL进阶:复杂查询与性能优化实战
java·sql·性能优化·mybatis
A__tao2 天前
一键将 SQL 转为 Java 实体类,全面支持 MySQL / PostgreSQL / Oracle!
java·sql·mysql
A__tao2 天前
SQL 转 Java 实体类工具
java·数据库·sql
无级程序员2 天前
hive2服务启动报错:/tmp/hive on HDFS should be writable(不是chmod 777能解决的)
hive·hadoop·hdfs