Categorias:

Funções de dados semiestruturados e estruturados (Matriz/objeto)

ARRAY_FLATTEN

Nivela um ARRAY de ARRAYs em um único ARRAY. A função concatena efetivamente os ARRAYs que são elementos do ARRAY de entrada e os retorna como um único ARRAY.

Sintaxe

ARRAY_FLATTEN( <array> )
Copy

Argumentos

array

O ARRAY de ARRAYs a ser nivelado.

Se algum elemento de array não for ARRAY, a função reportará um erro.

Retornos

Esta função retorna um ARRAY que é construído concatenando ARRAYs em array.

Se array for NULL ou contiver quaisquer elementos que sejam NULL, a função retornará NULL.

Notas de uso

  • Se array contiver vários níveis de ARRAYs aninhados, a função removerá apenas um nível de aninhamento.

    Por exemplo, se o ARRAY de entrada for:

    [ [ [1, 2], [3] ], [ [4], [5] ] ]
    

    A função retorna:

    [ [1, 2], [3], [4], [5] ]
    
    Copy

Exemplos

O exemplo a seguir nivela um ARRAY de ARRAYs. Cada elemento no ARRAY de entrada é um ARRAY de números. O exemplo nivela o ARRAY de entrada em um ARRAY contendo os números como elementos.

SELECT ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]);
Copy
+-----------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [4], [5, 6]]) |
|-----------------------------------------|
| [                                       |
|   1,                                    |
|   2,                                    |
|   3,                                    |
|   4,                                    |
|   5,                                    |
|   6                                     |
| ]                                       |
+-----------------------------------------+

O exemplo a seguir nivela um ARRAY que contém ARRAYs contendo ARRAYs. A função remove o primeiro nível de aninhamento.

SELECT ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]);
Copy
+--------------------------------------------+
| ARRAY_FLATTEN([[[1, 2], [3]], [[4], [5]]]) |
|--------------------------------------------|
| [                                          |
|   [                                        |
|     1,                                     |
|     2                                      |
|   ],                                       |
|   [                                        |
|     3                                      |
|   ],                                       |
|   [                                        |
|     4                                      |
|   ],                                       |
|   [                                        |
|     5                                      |
|   ]                                        |
| ]                                          |
+--------------------------------------------+

O exemplo a seguir demonstra que a função retorna um erro quando um elemento do ARRAY de entrada não é 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'

O exemplo a seguir demonstra que a função retorna NULL quando um elemento do ARRAY de entrada for NULL.

SELECT ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]);
Copy
+------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], NULL, [5, 6]]) |
|------------------------------------------|
| NULL                                     |
+------------------------------------------+

O exemplo a seguir demonstra que a função nivela um ARRAY quando um elemento do ARRAY de entrada for um ARRAY que contém um elemento NULL.

SELECT ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]);
Copy
+--------------------------------------------+
| ARRAY_FLATTEN([[1, 2, 3], [NULL], [5, 6]]) |
|--------------------------------------------|
| [                                          |
|   1,                                       |
|   2,                                       |
|   3,                                       |
|   undefined,                               |
|   5,                                       |
|   6                                        |
| ]                                          |
+--------------------------------------------+