对ARRAY数组切片,截取从start位置开始长度为length的元素组成新的ARRAY数组。
命令格式
array<T> slice(array<T> <a>, <start>, <length>)
参数说明
a:必填。ARRAY数组。
array<T>
中的T
指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。start:必填。切片起点,从1开始,表示从数组的首个元素开始向右切片。start可以为负数,表示从数组的末尾元素开始向右切片。
length:必填。切片长度,必须大于或等于0。切片长度如果大于ARRAY数组长度时,会返回从start位置开始到末尾元素组成的ARRAY数组。
返回值说明
返回ARRAY类型。
使用示例
示例1:截取ARRAY数组
array(10, 20, 20, null, null, 30)
从第1
个位置开始,切片长度为3
的元素。命令示例如下。--返回[10, 20, 20]。 select slice(array(10, 20, 20, null, null, 30), 1, 3);
示例2:截取ARRAY数组
array(10, 20, 20, null, null, 30)
从第-2
个位置开始,切片长度为2
的元素。命令示例如下。--返回[NULL, 30]。 select slice(array(10, 20, 20, null, null, 30), -2, 2);
示例3:截取ARRAY数组
array(10, 20, 20, null, null, 30)
从第3
个位置开始,切片长度为10
的元素。命令示例如下。--返回[20, NULL, NULL, 30]。 select slice(array(10, 20, 20, null, null, 30), 3, 10);
示例4:截取ARRAY数组
array(10, 20, 20, null, null, 30)
从第3
个位置开始,切片长度为0
的元素。命令示例如下。--返回[]。 select slice(array(10, 20, 20, null, null, 30), 3, 0);
相关函数
SLICE函数属于复杂类型函数,更多对复杂类型数据(例如ARRAY、MAP、STRUCT、JSON数据)的处理函数请参见复杂类型函数。