- 类别:
半结构化和结构化数据函数 (数组/对象)
ARRAY_DISTINCT¶
返回一个新 ARRAY,其中只包含与输入 ARRAY不同的元素。该函数排除输入 ARRAY 中存在的任何重复元素。
该函数不保证按特定顺序返回 ARRAY 中的元素。
该函数接受 NULL,这意味着在识别重复元素时,它将 NULLs 视为已知值。
语法¶
ARRAY_DISTINCT( <array> )
实参¶
array
可能包含要移除的重复元素的数组。
返回¶
此函数返回 ARRAY,其中包含输入数组的元素,而没有任何重复元素。例如,如果值 'x'
在输入 ARRAY 中多次出现,则只有一个元素在返回的 ARRAY 中具有值 'x'
。
如果输入实参为 NULL,则函数返回 NULL。
未指定返回数组中值的顺序。
使用说明¶
示例¶
以下示例演示该函数如何从输入 ARRAY 常量 返回没有重复元素 A
和 NULL
ARRAY :
SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);
+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [ |
| "A", |
| "B", |
| undefined |
| ] |
+---------------------------------------------+
以下示例演示传入 NULL(而不是 ARRAY)如何返回 NULL:
SELECT ARRAY_DISTINCT(NULL);
+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL |
+----------------------+
以下示例演示该函数如何移除作为输入 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 |
| } |
| ] |
+----------------------------------------------------------------------------+
如示例中所示,最后一个元素不被视为重复项,因为 b
具有不同的值(3
,不是 2
)。