类别:

半结构化和结构化数据函数 (数组/对象)

ARRAY_DISTINCT

返回一个新 ARRAY,其中只包含与输入 ARRAY不同的元素。该函数排除输入 ARRAY 中存在的任何重复元素。

该函数不保证按特定顺序返回 ARRAY 中的元素。

该函数接受 NULL,这意味着在识别重复元素时,它将 NULLs 视为已知值。

语法

ARRAY_DISTINCT( <array> )
Copy

实参

array

可能包含要移除的重复元素的数组。

返回

此函数返回 ARRAY,其中包含输入数组的元素,而没有任何重复元素。例如,如果值 'x' 在输入 ARRAY 中多次出现,则只有一个元素在返回的 ARRAY 中具有值 'x'

如果输入实参为 NULL,则函数返回 NULL。

未指定返回数组中值的顺序。

使用说明

  • 对于 OBJECT 类型的元素,对象必须完全相同才被视为重复。有关详细信息,请参阅 示例 (本主题内容)。

  • 在识别重复元素时,该函数将 NULL 视为已知值(即,NULL 不是除 NULL 之外的任何其他值 X 的重复项)。

示例

以下示例演示该函数如何从输入 ARRAY 常量 返回没有重复元素 ANULL ARRAY :

SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);

+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [                                           |
|   "A",                                      |
|   "B",                                      |
|   undefined                                 |
| ]                                           |
+---------------------------------------------+
Copy

以下示例演示传入 NULL(而不是 ARRAY)如何返回 NULL:

SELECT ARRAY_DISTINCT(NULL);

+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL                 |
+----------------------+
Copy

以下示例演示该函数如何移除作为输入 ARRAY 中的元素的重复 OBJECTs。该示例使用 OBJECT 常量 和 ARRAY 常量来构造 OBJECTs 和 ARRAY。

SELECT ARRAY_DISTINCT( [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3} ] );

+----------------------------------------------------------------------------+
| ARRAY_DISTINCT( [ {'A': 1, 'B': 2}, {'A': 1, 'B': 2}, {'A': 1, 'B': 3} ] ) |
|----------------------------------------------------------------------------|
| [                                                                          |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 2                                                                 |
|   },                                                                       |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 3                                                                 |
|   }                                                                        |
| ]                                                                          |
+----------------------------------------------------------------------------+
Copy

如示例中所示,最后一个元素不被视为重复项,因为 b 具有不同的值(3,不是 2)。

语言: 中文