TRY_ELEMENT_AT
功能概述
从 ARRAY 或 MAP 中按索引/键取值,越界或键不存在时返回 NULL 而不报错。与
ELEMENT_AT
ELEMENT_AT
的区别:
ELEMENT_AT
ELEMENT_AT
越界时报错,
TRY_ELEMENT_AT
TRY_ELEMENT_AT
返回 NULL。
语法
TRY_ELEMENT_AT(<array>, <index>)
TRY_ELEMENT_AT(<map>, <key>)
参数说明
<array>
<array>
:ARRAY 类型,使用 1 开始的正整数索引;-1
-1
表示最后一个元素。
<map>
<map>
:MAP 类型,使用键访问对应值。
<index>
<index>
:BIGINT 类型,1-based 索引,支持负数(-1
-1
为最后一个元素)。
<key>
<key>
:与 MAP 键类型一致。
使用示例
-- ARRAY 索引(1-based)
SELECT try_element_at(array(10,20,30), 1);
-- 10
SELECT try_element_at(array(10,20,30), 3);
-- 30
-- 负数索引:-1 为最后一个元素
SELECT try_element_at(array(10,20,30), -1);
-- 30
-- 越界返回 NULL(不报错)
SELECT try_element_at(array(10,20,30), 10);
-- NULL
-- MAP 键不存在返回 NULL
SELECT try_element_at(map('a',1,'b',2), 'c');
-- NULL
相关文档