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

相关推荐
Root_Hacker1 小时前
sql注入学习笔记
数据库·sql·web安全·网络安全·oracle·网络攻击模型
hamawari2 小时前
SQL语法
数据库·sql·oracle
invicinble4 小时前
对于mysql层对sql层面的知识体系的理解和把握
数据库·sql·mysql
l1t4 小时前
DeepSeek辅助总结postgresql wiki提供的数独求解器
数据库·sql·postgresql
万行4 小时前
SQL进阶&索引篇
开发语言·数据库·人工智能·sql
山岚的运维笔记6 小时前
SQL Server笔记 -- 第13章:IF...ELSE
数据库·笔记·sql·microsoft·sqlserver
酉鬼女又兒6 小时前
SQL23 统计每个学校各难度的用户平均刷题数
数据库·sql·算法
B站计算机毕业设计超人7 小时前
计算机毕业设计hadoop+spark+hive在线教育可视化 课程推荐系统 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·人工智能·hive·hadoop·scrapy·spark·课程设计
B站计算机毕业设计超人7 小时前
计算机毕业设计PySpark+Hive+Django小红书评论情感分析 小红书笔记可视化 小红书舆情分析预测系统 大数据毕业设计(源码+LW+PPT+讲解)
大数据·人工智能·hive·爬虫·python·spark·课程设计