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)