- 카테고리:
반정형 및 정형 데이터 함수 (배열/오브젝트)
ARRAY_SLICE¶
입력 배열 요소의 지정된 하위 세트에서 구성된 배열을 반환합니다.
구문¶
ARRAY_SLICE( <array> , <from> , <to> )
인자¶
array
결과 배열을 구성하기 위해 요소의 하위 세트가 사용되는 소스 배열입니다.
from
소스 배열의 위치입니다. 첫 번째 요소의 위치는
0
입니다.from
보다 적은 위치의 요소는 결과 배열에 포함되지 않습니다.to
소스 배열의 위치입니다.
to
과 같거나 큰 위치의 요소는 결과 배열에 포함되지 않습니다.
반환¶
반환된 값의 데이터 타입은 ARRAY
입니다.
사용법 노트¶
출력에는 매개 변수
to
로 지정한 것까지의(해당 요소는 제외) 요소를 포함합니다.배열이 NULL이면 결과는 NULL입니다.
from
또는to
가 NULL이면 결과는 NULL입니다.from
또는to
가 음수인 경우, 배열의 시작이 아니라 배열의 끝을 기준으로 합니다. 예를 들어 “-2”는 배열의 마지막에서 두 번째 위치를 나타냅니다.from
및to
가 둘 다 배열의 상한을 벗어나거나 둘 다 배열의 하한을 벗어나면 결과는 빈 세트입니다.정형 ARRAY 를 함수에 전달하면 함수는 동일한 유형의 정형 ARRAY를 반환합니다.
이러한 규칙(예: 음수를 배열 끝의 인덱스로 해석하고, 조각이 to
인덱스까지이되 해당 인덱스는 포함하지 않는다는 규칙)의 대부분은 Python과 같은 프로그래밍 언어의 배열 조각에 대한 규칙과 유사합니다.
이러한 각 규칙은 아래의 하나 이상의 예에 나와 있습니다.
예¶
이는 배열을 조각화하는 간단한 예를 보여줍니다.
select array_slice(array_construct(0,1,2,3,4,5,6), 0, 2);출력:
+---------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT(0,1,2,3,4,5,6), 0, 2) | |---------------------------------------------------| | [ | | 0, | | 1 | | ] | +---------------------------------------------------+
이는 NULL을 입력 배열로 사용한 효과를 보여줍니다.
select array_slice(NULL, 2, 3);출력:
+-------------------------+ | ARRAY_SLICE(NULL, 2, 3) | |-------------------------| | NULL | +-------------------------+
이는 NULL을 조각 인덱스 중 하나로 사용한 효과를 보여줍니다:
select array_slice(array_construct(0,1,2,3,4,5,6), NULL, 2);출력:
+------------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT(0,1,2,3,4,5,6), NULL, 2) | |------------------------------------------------------| | NULL | +------------------------------------------------------+
이는 음수를 인덱스로 사용하는 효과를 보여줍니다. 숫자는 배열 끝에서 오프셋으로 해석됩니다.
select array_slice(array_construct(0,1,2,3,4,5,6), 0, -2);출력:
+----------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT(0,1,2,3,4,5,6), 0, -2) | |----------------------------------------------------| | [ | | 0, | | 1, | | 2, | | 3, | | 4 | | ] | +----------------------------------------------------+
두 인덱스 모두 음수일 수 있습니다. 즉, 둘 다 배열의 끝을 기준으로 할 수 있습니다.
select array_slice(array_construct(0,1,2,3,4,5,6), -5, -3);출력:
+-----------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT(0,1,2,3,4,5,6), -5, -3) | |-----------------------------------------------------| | [ | | 2, | | 3 | | ] | +-----------------------------------------------------+
이 예에서 두 인덱스는 모두 배열의 끝을 벗어납니다.
select array_slice(array_construct(0,1,2,3,4,5,6), 10, 12);출력:
+-----------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT(0,1,2,3,4,5,6), 10, 12) | |-----------------------------------------------------| | [] | +-----------------------------------------------------+
이 예에서 두 인덱스는 모두 배열의 시작 앞에 있습니다.
select array_slice(array_construct(0,1,2,3,4,5,6), -10, -12);출력:
+-------------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT(0,1,2,3,4,5,6), -10, -12) | |-------------------------------------------------------| | [] | +-------------------------------------------------------+
인덱스는 숫자여야 하지만, 배열의 요소는 숫자일 필요가 없습니다.
SELECT ARRAY_SLICE(ARRAY_CONSTRUCT('foo','snow','flake','bar'), 1, 3);출력:
+----------------------------------------------------------------+ | ARRAY_SLICE(ARRAY_CONSTRUCT('FOO','SNOW','FLAKE','BAR'), 1, 3) | |----------------------------------------------------------------| | [ | | "snow", | | "flake" | | ] | +----------------------------------------------------------------+