MAP_CONSTRUCT
MAP_CONSTRUCT
MAP_CONSTRUCT 함수는 키와 값을 번갈아 나열한 입력으로부터 MAP을 구성해요.
출처: MAP_CONSTRUCT
본문
MAP_CONSTRUCT 함수는 일련의 키(key)와 값(value)을 번갈아 사용해 구성한 MAP을 반환해요.
구문 (Syntax)
MAP_CONSTRUCT( <key_1>, <value_1> [ , <key_2>, <value_2> , ... ] )
인자 (Arguments)
- key_N — 키-값 쌍의 키예요. 키는
VARCHAR또는 숫자 값이어야 해요. 모든 키는 단일 공통 키 타입으로 캐스트돼요. - value_N — 키와 연관된 값이에요. 모든 값은 단일 공통 값 타입으로 캐스트돼요.
반환 (Returns)
키 타입이 키들의 공통 타입(VARCHAR 또는 숫자 타입)이고 값 타입이 값들의 공통 타입인 MAP을 반환해요. 예를 들어 MAP_CONSTRUCT('a', 1, 'b', 2)는 MAP(VARCHAR, NUMBER) 값을 반환해요.
사용 메모 (Usage notes)
- 인자는 짝수 개(하나 이상의 키-값 쌍)를 지정해야 해요. 홀수 개를 지정하면 오류를 반환해요.
- 키는
VARCHAR또는 숫자 값이어야 해요. 다른 키 타입(예:BOOLEAN또는DATE)은 지원되지 않으며 오류를 반환해요. - 모든 키는 단일 공통 키 타입으로 캐스트되고, 모든 값은 단일 공통 값 타입으로 캐스트돼요. 예를 들어
MAP_CONSTRUCT(1, 'a', '2', 'b')에서는 키가 숫자 타입으로 통일돼요. - 맵의 키는 고유해야 해요. 두 키가 같으면 함수는 오류를 반환해요.
- 키가
NULL이면 해당 키-값 쌍은 결과 맵에서 생략돼요. - 값이
NULL이면 키-값 쌍은 유지돼요. - 결과 맵의 항목은 키 순서로 정렬돼요.
MAP대신 반정형OBJECT를 구성하려면OBJECT_CONSTRUCT또는OBJECT_CONSTRUCT_KEEP_NULL을 사용해요.
예제 (Examples)
키와 값을 번갈아 사용해 맵을 구성해요:
SELECT MAP_CONSTRUCT('a', 1, 'b', 2) AS constructed_map;
+-----------------+
| CONSTRUCTED_MAP |
|-----------------|
| { |
| "a": 1, |
| "b": 2 |
| } |
+-----------------+
인자의 순서와 무관하게 결과 맵의 항목은 키 순서로 정렬돼요:
SELECT MAP_KEYS(MAP_CONSTRUCT('b', 2, 'a', 1)) AS keys;
+-----------+
| KEYS |
|-----------|
| [ |
| "a", |
| "b" |
| ] |
+-----------+
NULL 키는 생략되므로 다음 문은 단일 항목의 맵을 구성해요:
SELECT MAP_CONSTRUCT(NULL, 1, 'a', 2) AS constructed_map;
+-----------------+
| CONSTRUCTED_MAP |
|-----------------|
| { |
| "a": 2 |
| } |
+-----------------+
맵의 키는 고유해야 하므로 중복 키를 지정하면 오류를 반환해요:
SELECT MAP_CONSTRUCT('a', 1, 'a', 2);
100103 (22000): Duplicate field key 'a'
더 알아보기 (Learn more)
- MAP_KEYS
- OBJECT_CONSTRUCT
- OBJECT_CONSTRUCT_KEEP_NULL_STRUCTURED
- 반정형 및 정형 데이터 함수 (Semi-structured and structured data functions)