Copies the elements in an array from the start position based on a specific length and returns the elements as a new array.

## Syntax

``array<T> slice(array<T> <a>, <start>, <length>)``

## Parameters

• a: required. This parameter specifies an array that `T` in `array<T>` specifies the data type of the elements in the array. The elements can be of any data type.
• start: required. This parameter specifies the position at which the function starts to copy elements from left to right. The minimum positive value of this parameter is 1. You can also set the start parameter to a negative value. In this case, the start position is counted from the end of the array, but the elements are still copied from left to right.
• length: required. The number of elements in the returned array. The value must be greater than or equal to 0. If the value is greater than the length of the input array, this function returns a new array that consists of the elements from the start position to the end of the input array.

## Return value

A value of the ARRAY type is returned.

## Examples

• Example 1: Copy the elements in `array(10, 20, 20, null, null, 30)` from position `1` based on a length of `3`. Sample statement:
``````-- [10, 20, 20] is returned.
select slice(array(10, 20, 20, null, null, 30), 1, 3);``````
• Example 2: Copy the elements in `array(10, 20, 20, null, null, 30)` from position `-2` based on a length of `2`. Sample statement:
``````-- [null, 30] is returned.
select slice(array(10, 20, 20, null, null, 30), -2, 2);  ``````
• Example 3: Copy the elements in `array(10, 20, 20, null, null, 30)` from position `3` based on a length of `10`. Sample statement:
``````-- [20, null, null, 30] is returned.
select slice(array(10, 20, 20, null, null, 30), 3, 10); ``````
• Example 4: Copy the elements in `array(10, 20, 20, null, null, 30)` from position `3` based on a length of `0`. Sample statement:
``````-- [] is returned.
select slice(array(10, 20, 20, null, null, 30), 3, 0);``````