Catégories :

Fonctions de données semi-structurées et structurées (tableau/objet)

ARRAY_FLATTEN

Aplatit un ARRAY de ARRAYs en un seul ARRAY. La fonction concatène effectivement les ARRAYs qui sont des éléments de l’entrée ARRAY et les renvoie sous la forme d’un seul ARRAY.

Syntaxe

ARRAY_FLATTEN( <array> )
Copy

Arguments

array

L’ARRAY des ARRAYs à aplatir.

Si un élément de array n’est pas un ARRAY, la fonction signale une erreur.

Renvoie

Cette fonction renvoie un ARRAY construit en concaténant les ARRAYs dans array.

Si array est NULL ou contient des éléments qui sont NULL, la fonction renvoie NULL.

Notes sur l’utilisation

  • Si array contient plusieurs niveaux d’ARRAYs imbriqués, la fonction ne supprime qu’un seul niveau d’imbrication.

    Par exemple, si l’entrée ARRAY est :

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

    La fonction retourne :

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

Exemples

L’exemple suivant aplatit un ARRAY d’ARRAYs. Chaque élément de l’ARRAY en entrée est un ARRAY de nombres. L’exemple aplatit l’ARRAY en entrée en un ARRAY contenant les nombres comme éléments.

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

L’exemple suivant aplatit un ARRAY qui contient des ARRAYs contenant des ARRAYs. La fonction supprime le premier niveau d’imbrication.

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

L’exemple suivant montre que la fonction renvoie une erreur lorsqu’un élément de l’ARRAY en entrée n’est pas un 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'

L’exemple suivant montre que la fonction renvoie NULL lorsqu’un élément de l’ARRAY en entrée est NULL.

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

L’exemple suivant montre que la fonction aplatit un ARRAY lorsqu’un élément de l’ARRAY en entrée est un ARRAY qui contient un élément 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                                        |
| ]                                          |
+--------------------------------------------+