SLICE

对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数据)的处理函数请参见复杂类型函数