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

相关推荐
howard20055 小时前
Hive实战任务 - 9.1 实现词频统计
hive·词频统计
Mr.朱鹏8 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
ccino .9 小时前
sql注入中过滤分隔符的测试方法
数据库·sql
满目山河•10 小时前
二、复制三台虚拟机
hive·hadoop·hbase
Hello.Reader11 小时前
Flink SQL CREATE 语句从建表到 CTAS/RTAS,一次讲清
sql·flink·linq
2501_9167665413 小时前
JDBC以及工具类介绍
sql
她说..15 小时前
Spring AOP场景4——事务管理(源码分析)
java·数据库·spring boot·后端·sql·spring·springboot
男孩李15 小时前
linux下执行pg数据的sql文件,报错error:permission denied for schema plat
数据库·sql
小阿宁的猫猫15 小时前
sqlmap的使用
sql·网络安全·php
howard200515 小时前
Hive实战任务 - 9.3 实现学生信息排序和统计
hive·排序·汇总·学生信息