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

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"] |
    +------------------------------------------------------------+