类别:

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

ARRAY_FLATTEN

将 ARRAYs 中的 ARRAY 展平为单个 ARRAY。该函数有效地连接了作为输入 ARRAY 元素的 ARRAYs,并将它们作为单个 ARRAY 返回。

语法

ARRAY_FLATTEN( <array> )
Copy

实参

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] ]
    
    Copy

示例

以下示例展平了 ARRAYs 中的 ARRAY。输入 ARRAY 中的每个元素都是数字的 ARRAY。该示例将输入 ARRAY 展平为包含数字作为元素的 ARRAY。

SELECT ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]);
Copy
+-----------------------------------------+
| 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]]]);
Copy
+--------------------------------------------+
| ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]) |
|--------------------------------------------|
| [                                          |
|   [                                        |
|     1,                                     |
|     2                                      |
|   ],                                       |
|   [                                        |
|     3                                      |
|   ],                                       |
|   [                                        |
|     4                                      |
|   ],                                       |
|   [                                        |
|     5                                      |
|   ]                                        |
| ]                                          |
+--------------------------------------------+

以下示例演示了当输入 ARRAY 的元素不是 ARRAY 时,则该函数将返回错误。

SELECT ARRAY_FLATTEN([[1, 2, 3], 4, [5, 6]]);
Copy
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]]);
Copy
+------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]) |
|------------------------------------------|
| NULL                                     |
+------------------------------------------+

以下示例演示了当输入 ARRAY 的元素是包含 NULL 元素的 ARRAY 时,该函数会展平 ARRAY。

SELECT ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]);
Copy
+--------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]) |
|--------------------------------------------|
| [                                          |
|   1,                                       |
|   2,                                       |
|   3,                                       |
|   undefined,                               |
|   5,                                       |
|   6                                        |
| ]                                          |
+--------------------------------------------+
语言: 中文