- 类别:
半结构化和结构化数据函数 (数组/对象)
ARRAY_FLATTEN¶
将 ARRAYs 中的 ARRAY 展平为单个 ARRAY。该函数有效地连接了作为输入 ARRAY 元素的 ARRAYs,并将它们作为单个 ARRAY 返回。
语法¶
ARRAY_FLATTEN( <array> )
实参¶
array
要展平的 ARRAYs 中的 ARRAY。
如果
array
的任何元素不是 ARRAY,该函数将报告错误。
返回¶
此函数返回一个通过连接 array
中的 ARRAYs 构建的 ARRAY。
如果 array
为 NULL 或包含任何值为 NULL 的元素,则该函数返回 NULL。
使用说明¶
如果
array
包含多个嵌套 ARRAYs 级别,则该函数仅移除一个嵌套级别。例如,如果输入 ARRAY 是:
[ [ [1, 2], [3] ], [ [4], [5] ] ]
该函数返回:
[ [1, 2], [3], [4], [5] ]
示例¶
以下示例展平了 ARRAYs 中的 ARRAY。输入 ARRAY 中的每个元素都是数字的 ARRAY。该示例将输入 ARRAY 展平为包含数字作为元素的 ARRAY。
SELECT ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]);
+-----------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]) |
|-----------------------------------------|
| [ |
| 1, |
| 2, |
| 3, |
| 4, |
| 5, |
| 6 |
| ] |
+-----------------------------------------+
以下示例展平了包含 ARRAYs(包含 ARRAYs)的 ARRAY。该函数移除了第一级嵌套。
SELECT ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]);
+--------------------------------------------+
| ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]) |
|--------------------------------------------|
| [ |
| [ |
| 1, |
| 2 |
| ], |
| [ |
| 3 |
| ], |
| [ |
| 4 |
| ], |
| [ |
| 5 |
| ] |
| ] |
+--------------------------------------------+
以下示例演示了当输入 ARRAY 的元素不是 ARRAY 时,则该函数将返回错误。
SELECT ARRAY_FLATTEN([[1, 2, 3], 4, [5, 6]]);
100107 (22000): Not an array: 'Input argument to ARRAY_FLATTEN is not an array of arrays'
以下示例演示了当输入 ARRAY 的元素是 NULL 时,则该函数将返回 NULL。
SELECT ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]);
+------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]) |
|------------------------------------------|
| NULL |
+------------------------------------------+
以下示例演示了当输入 ARRAY 的元素是包含 NULL 元素的 ARRAY 时,该函数会展平 ARRAY。
SELECT ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]);
+--------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]) |
|--------------------------------------------|
| [ |
| 1, |
| 2, |
| 3, |
| undefined, |
| 5, |
| 6 |
| ] |
+--------------------------------------------+