카테고리:

반정형 및 정형 데이터 함수 (배열/오브젝트)

ARRAY_SLICE

입력 배열 요소의 지정된 하위 세트에서 구성된 배열을 반환합니다.

구문

ARRAY_SLICE( <array> , <from> , <to> )
Copy

인자

array

결과 배열을 구성하기 위해 요소의 하위 세트가 사용되는 소스 배열입니다.

from

소스 배열의 위치입니다. 첫 번째 요소의 위치는 0 입니다. from 보다 작은 위치의 요소는 결과 배열에 포함되지 않습니다.

to

소스 배열의 위치입니다. to 과 같거나 큰 위치의 요소는 결과 배열에 포함되지 않습니다.

반환

이 함수는 ARRAY 형식의 값을 반환합니다.

입력 array, from 또는 to 등 인자가 NULL 인 경우 NULL 을 반환합니다 .

사용법 노트

  • 출력에는 매개 변수 to 로 지정한 것까지의(해당 요소는 제외) 요소를 포함합니다.

  • from 또는 to 가 음수인 경우, 배열의 시작이 아니라 배열의 끝을 기준으로 합니다. 예를 들어. -2 는 배열의 마지막 위치에서 두 번째 위치를 나타냅니다.

  • fromto 가 둘 다 배열의 상한을 벗어나거나 둘 다 배열의 하한을 벗어나면 결과는 빈 세트입니다.

  • 정형 배열 을 함수에 전달하면 함수는 동일한 유형의 정형 배열을 반환합니다.

이러한 규칙(예: 음수를 배열 끝의 인덱스로 해석하고, 조각이 마지막 to 인덱스까지이지만 해당 인덱스는 포함하지 않는다는 규칙)의 대부분은 Python과 같은 프로그래밍 언어의 배열 조각에 대한 규칙과 유사합니다.

이러한 각 규칙은 아래의 하나 이상의 예에 나와 있습니다.

이 예제에서는 ARRAY 상수 를 사용하여 배열을 구성합니다. 또는 ARRAY_CONSTRUCT 함수를 사용하여 배열을 구성할 수도 있습니다.

이 예제는 간단한 배열 슬라이스를 보여줍니다.

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 0, 2);
Copy
+------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], 0, 2) |
|------------------------------------|
| [                                  |
|   0,                               |
|   1                                |
| ]                                  |
+------------------------------------+

이 예제에서는 ARRAY_SLICE 함수와 함께 ARRAY_SIZE 함수를 사용하여 배열을 마지막 인덱스까지 조각화합니다.

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 3, ARRAY_SIZE([0,1,2,3,4,5,6])) AS slice_to_last_index;
Copy
+---------------------+
| SLICE_TO_LAST_INDEX |
|---------------------|
| [                   |
|   3,                |
|   4,                |
|   5,                |
|   6                 |
| ]                   |
+---------------------+

인덱스는 숫자여야 하지만 배열의 요소는 숫자가 아니어도 됩니다.

SELECT ARRAY_SLICE(['foo','snow','flake','bar'], 1, 3);
Copy
+-------------------------------------------------+
| ARRAY_SLICE(['FOO','SNOW','FLAKE','BAR'], 1, 3) |
|-------------------------------------------------|
| [                                               |
|   "snow",                                       |
|   "flake"                                       |
| ]                                               |
+-------------------------------------------------+

이 예제는 NULL 을 입력 배열로 사용했을 때의 효과를 보여줍니다.

SELECT ARRAY_SLICE(NULL, 2, 3);
Copy
+-------------------------+
| ARRAY_SLICE(NULL, 2, 3) |
|-------------------------|
| NULL                    |
+-------------------------+

이 예제는 NULL 을 슬라이스 인덱스 중 하나로 사용했을 때의 효과를 보여줍니다.

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], NULL, 2);
Copy
+---------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], NULL, 2) |
|---------------------------------------|
| NULL                                  |
+---------------------------------------+

이 예제는 음수를 인덱스로 사용할 때의 효과를 보여줍니다. 이 숫자는 배열의 끝에서 오프셋으로 해석됩니다.

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 0, -2);
Copy
+-------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], 0, -2) |
|-------------------------------------|
| [                                   |
|   0,                                |
|   1,                                |
|   2,                                |
|   3,                                |
|   4                                 |
| ]                                   |
+-------------------------------------+

이 예제는 두 인덱스가 모두 음수일 수 있음을 보여줍니다(즉, 둘 다 배열의 끝을 기준으로 할 수 있음).

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], -5, -3);
Copy
+--------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], -5, -3) |
|--------------------------------------|
| [                                    |
|   2,                                 |
|   3                                  |
| ]                                    |
+--------------------------------------+

이 예에서 두 인덱스는 모두 배열의 끝을 벗어납니다.

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], 10, 12);
Copy
+--------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], 10, 12) |
|--------------------------------------|
| []                                   |
+--------------------------------------+

이 예에서 두 인덱스는 모두 배열의 시작 앞에 있습니다.

SELECT ARRAY_SLICE([0,1,2,3,4,5,6], -10, -12);
Copy
+----------------------------------------+
| ARRAY_SLICE([0,1,2,3,4,5,6], -10, -12) |
|----------------------------------------|
| []                                     |
+----------------------------------------+