본문으로 건너뛰기
최종 수정: 에

ARRAY_UNION

기능​

ARRAY_UNION은 여러 배열의 합집합을 반환합니다. 즉, 배열의 모든 요소를 병합하고 중복을 제거한 뒤 새 배열을 반환합니다.

구문​

ARRAY_UNION(arr1, arr2, ..., arrN)

매개변수​

  • arr1, arr2, ..., arrN: 임의 개수의 배열을 입력으로 받으며, 모두 ARRAY<T> 타입이어야 합니다.
    • 모든 배열의 요소 타입 T는 같거나 하나의 공통 타입으로 암시적으로 변환할 수 있어야 합니다.
    • 요소 타입 T는 숫자, 문자열, 날짜/시간, IP 또는 UUID일 수 있습니다.

반환 값​

  • 입력 배열의 모든 고유 요소를 포함하는 ARRAY<T> 타입의 새 배열을 반환합니다(중복 제거).
    • 입력 매개변수 중 하나라도 NULL이면 NULL을 반환합니다(예제 참조).

사용 시 참고 사항​

  1. 중복 제거는 동등 비교(= 연산자)를 기준으로 수행됩니다.
  2. 결과 배열에는 NULL이 하나만 유지됩니다(예제 참조).
  3. 입력 배열 자체에 동일한 요소가 여러 개 포함되어 있어도 하나만 유지됩니다(예제 참조).
  4. 결과 배열의 요소 순서는 보장되지 않습니다.

예제​

  1. 간단한 예제

    SELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world')); 
    +---------------------------------------------------------------+
    | ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world')) |
    +---------------------------------------------------------------+
    | ["world", "hello"] |
    +---------------------------------------------------------------+

    SELECT ARRAY_UNION(ARRAY(1, 2, 3), ARRAY(3, 5, 6));
    +---------------------------------------------+
    | ARRAY_UNION(ARRAY(1, 2, 3), ARRAY(3, 5, 6)) |
    +---------------------------------------------+
    | [1, 5, 2, 6, 3] |
    +---------------------------------------------+
  2. 입력 배열 중 하나라도 NULL이면 NULL을 반환합니다.

    SELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'), NULL); 
    +---------------------------------------------------------------------+
    | ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'), NULL) |
    +---------------------------------------------------------------------+
    | NULL |
    +---------------------------------------------------------------------+
  3. 입력 배열에 NULL이 포함되어 있으면 출력 배열에는 NULL이 하나만 포함됩니다.

    SELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', NULL)); 
    +---------------------------------------------------------------------+
    | ARRAY_UNION(ARRAY('hello', 'world', 'hello'), ARRAY('hello', NULL)) |
    +---------------------------------------------------------------------+
    | [null, "world", "hello"] |
    +---------------------------------------------------------------------+

    SELECT ARRAY_UNION(ARRAY(NULL, 'world'), ARRAY('hello', NULL));
    +---------------------------------------------------------+
    | ARRAY_UNION(ARRAY(NULL, 'world'), ARRAY('hello', NULL)) |
    +---------------------------------------------------------+
    | [null, "world", "hello"] |
    +---------------------------------------------------------+
  4. 배열에 중복 요소가 포함되어 있으면 하나만 반환됩니다.

    SELECT ARRAY_UNION(ARRAY('hello', 'world', 'hello'), ARRAY('hello', NULL)); 
    +------------------------------------------------------------+
    | ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', NULL)) |
    +------------------------------------------------------------+
    | [null, "world", "hello"] |
    +------------------------------------------------------------+