최종 수정: 에
ARRAY_ENUMERATE
array_enumerate
설명
배열의 각 요소에 대해 1부터 시작하는 위치 인덱스를 반환합니다. 이 함수는 배열의 각 요소에 해당하는 위치 번호를 생성합니다.
구문
array_enumerate(ARRAY<T> arr)
매개변수
arr:ARRAY타입으로, 위치 인덱스를 생성할 대상 배열입니다. 컬럼 이름 또는 상수 값을 지원합니다.
T에 지원되는 타입:
- 숫자 타입: TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL
- 문자열 타입: CHAR, VARCHAR, STRING
- 날짜 및 시간 타입: DATE, DATETIME, DATEV2, DATETIMEV2, TIMESTAMP_NS
- 불리언 타입: BOOLEAN
- IP 타입: IPV4, IPV6
- UUID: UUID
- 복합 타입: ARRAY, MAP, STRUCT
반환 값
반환 타입: ARRAY
반환 값의 의미:
- 입력 배열과 길이가 같은 새 배열을 반환하며, 각 위치에는 입력 배열의 해당 요소에 대한 위치 인덱스(1부터 시작)가 포함됩니다
- NULL: 입력 배열이 NULL인 경우
사용 시 참고 사항:
- 이 함수는 배열의 각 요소에 대해 1부터 순서대로 증가하는 위치 인덱스를 생성합니다
- 빈 배열을 입력하면 빈 배열을 반환하고, NULL 배열을 입력하면 NULL을 반환합니다
- 배열 요소가 null인 경우: null 요소에도 해당 위치 인덱스가 생성됩니다
예제
쿼리 예제:
배열의 위치 인덱스 생성:
SELECT array_enumerate([1, 2, 1, 4, 5]);
+----------------------------------+
| array_enumerate([1, 2, 1, 4, 5]) |
+----------------------------------+
| [1, 2, 3, 4, 5] |
+----------------------------------+
빈 배열을 입력하면 빈 배열 반환:
SELECT array_enumerate([]);
+----------------------+
| array_enumerate([]) |
+----------------------+
| [] |
+----------------------+
null 값을 포함하는 배열에서는 null 요소에도 위치 인덱스가 생성됩니다:
SELECT array_enumerate([1, null, 3, null, 5]);
+--------------------------------------------+
| array_enumerate([1, null, 3, null, 5]) |
+--------------------------------------------+
| [1, 2, 3, 4, 5] |
+--------------------------------------------+
복합 타입 예제:
중첩 배열 타입:
SELECT array_enumerate([[1,2],[3,4],[5,6]]);
+----------------------------------------+
| array_enumerate([[1,2],[3,4],[5,6]]) |
+----------------------------------------+
| [1, 2, 3] |
+----------------------------------------+
Map 타입:
SELECT array_enumerate([{'k':1},{'k':2},{'k':3}]);
+----------------------------------------------+
| array_enumerate([{'k':1},{'k':2},{'k':3}]) |
+----------------------------------------------+
| [1, 2, 3] |
+----------------------------------------------+
Struct 타입:
SELECT array_enumerate(array(named_struct('name','Alice','age',20),named_struct('name','Bob','age',30)));
+----------------------------------------------------------------------------------------+
| array_enumerate(array(named_struct('name','Alice','age',20),named_struct('name','Bob','age',30))) |
+----------------------------------------------------------------------------------------+
| [1, 2] |
+----------------------------------------------------------------------------------------+
매개변수 개수가 올바르지 않을 때 발생하는 오류:
SELECT array_enumerate([1,2,3], [4,5,6]);
ERROR 1105 (HY000): errCode = 2, detailMessage = Can not found function 'array_enumerate' which has 2 arity. Candidate functions are: [array_enumerate(Expression)]
배열이 아닌 타입을 전달할 때 발생하는 오류:
SELECT array_enumerate('not_an_array');
ERROR 1105 (HY000): errCode = 2, detailMessage = Can not find the compatibility function signature: array_enumerate(VARCHAR(12))
키워드
ARRAY, ENUMERATE, ARRAY_ENUMERATE