メインコンテンツまでスキップ
に最終更新

ARRAY_UNION

説明​

ARRAY_UNION は複数の配列の和集合を返します。各配列のすべての要素を結合し、重複を除いた新しい配列を返します。

構文​

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

パラメータ​

  • arr1, arr2, ..., arrN:任意の数の配列を指定します。すべて ARRAY<T> 型です。
    • すべての配列の要素型 T は同じであるか、共通の型に暗黙的に変換できる必要があります。
    • 要素型 T には、数値型、文字列型、日付・時刻型、IP 型を使用できます。

戻り値​

  • 入力配列の重複を除いたすべての要素を含む、新しい 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"] |
    +------------------------------------------------------------+