跳到主要内容

ARRAY_UNION

功能

ARRAY_UNION 用于返回多个数组的并集,即合并所有数组中出现的元素,去重后组成一个新的数组。

语法

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

参数

  • arr1, arr2, ..., arrN:任意数量的数组输入,类型均为 ARRAY<T>
    • 所有数组的元素类型 T 必须一致,或可隐式转换为统一类型。
    • 两个数组的元素类型 T 可以是数值类型、字符串类型、时间类型、IP类型。

返回值

  • 返回一个 ARRAY 类型的新数组, 包含所有输入数组中的唯一元素,即去重后的并集。
    • 如果某一个参数是 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'), 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"] |
    +------------------------------------------------------------+