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

相关推荐
YOU OU38 分钟前
MySQL面试题
sql·mysql
野生技术架构师1 小时前
一个简单SQL的深度解析
android·数据库·sql
麦聪聊数据1 小时前
数据库安全与运维管控(五):基于AST的SQL拦截与动态审批
运维·数据库·sql
xiaoyaohou111 小时前
025、分布式计算实战:Spark Core与Spark SQL
sql·ajax·spark
路ZP1 小时前
放大镜下拉框
java·数据库·sql
chatexcel2 小时前
【实战教程】ChatDB 入门:基于自然语言的无 SQL 数据库操作实践
数据库·sql·oracle
泷羽Sec-静安2 小时前
AICTFer一天速成指南
python·sql·ctf
流觞 无依2 小时前
DedeCMS plus/digg.php 顶踩注入(SQL注入)修复教程
sql·安全·php
虚幻如影3 小时前
Hive 中“STRING类型无需显式指定长度
数据仓库·hive·hadoop
一江寒逸12 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql