- 카테고리:
반정형 데이터 함수 (배열/오브젝트)
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
가 둘 다 배열의 상한을 벗어나거나 둘 다 배열의 하한을 벗어나면 결과는 빈 세트입니다.
이러한 규칙(예: 음수를 배열 끝의 인덱스로 해석하고, 조각이 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" | | ] | +----------------------------------------------------------------+