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

相关推荐
w***4241 小时前
SQL-Server链接服务器访问Oracle数据
服务器·sql·oracle
q***09802 小时前
MySQL 常用 SQL 语句大全
数据库·sql·mysql
q***64972 小时前
VS与SQL Sever(C语言操作数据库)
c语言·数据库·sql
BG8EQB3 小时前
开发者的存储救赎计划:从SQL到云原生的架构演进
sql·云原生·架构
百***757411 小时前
从 SQL 语句到数据库操作
数据库·sql·oracle
i***395811 小时前
SQL 注入详解:原理、危害与防范措施
数据库·sql·oracle
舒一笑17 小时前
信息的建筑学:MyBatis Log Panda 如何重构开发者的认知地图
后端·sql·intellij idea
core51219 小时前
不借助框架实现Text2SQL
sql·mysql·ai·大模型·qwen·text2sql
张人玉21 小时前
SQLite 快速入门 Cheat Sheet
数据库·sql·sqlite
DarkAthena1 天前
【DuckDB】活用marco以兼容GaussDB的SQL执行
数据库·sql·duckdb