CatĂ©gories :

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

ARRAY_SORT¶

Renvoie un ARRAY contenant les Ă©lĂ©ments du ARRAY d’entrĂ©e triĂ©s par ordre croissant ou dĂ©croissant. Vous pouvez spĂ©cifier si les Ă©lĂ©ments NULL sont triĂ©s avant ou aprĂšs les Ă©lĂ©ments non NULL.

Syntaxe¶

ARRAY_SORT( <array> [ , <sort_ascending> [ , <nulls_first> ] ] )
Copy

Arguments¶

Nécessaire

array

Le ARRAY des éléments à trier.

Facultatif

sort_ascending

Indique si les Ă©lĂ©ments doivent ĂȘtre triĂ©s par ordre croissant ou dĂ©croissant :

  • Indiquez TRUE pour trier les Ă©lĂ©ments par ordre croissant.

  • Indiquez FALSE pour trier les Ă©lĂ©ments par ordre dĂ©croissant.

Par dĂ©faut : TRUE

nulls_first

SpĂ©cifie si les Ă©lĂ©ments SQL NULL doivent ĂȘtre placĂ©s au dĂ©but ou Ă  la fin du ARRAY triĂ© :

  • SpĂ©cifiez TRUE pour placer les Ă©lĂ©ments SQL NULL en premier dans le ARRAY.

  • SpĂ©cifiez FALSE pour placer les Ă©lĂ©ments SQL NULL en dernier dans le ARRAY.

Valeur par dĂ©faut : FALSE si le ARRAY est triĂ© par ordre croissant ; TRUE si ARRAY est triĂ© par ordre dĂ©croissant.

Cet argument n’affecte que l’ordre des Ă©lĂ©ments de SQL NULL. Cela n’affecte pas l’ordre des Ă©lĂ©ments JSON null.

Renvoie¶

Cette fonction renvoie un ARRAY qui contient les Ă©lĂ©ments de array dans l’ordre.

Notes sur l’utilisation¶

  • L’ordre de tri est Ă©quivalent Ă  l’ordre rĂ©sultant de l’aplatissement du ARRAY et de la spĂ©cification d’une clause ORDER BY avec les paramĂštres ASC | DESC and NULLS FIRST | LAST correspondants.

  • Si l’un des arguments d’entrĂ©e est NULL, la fonction renvoie NULL.

  • Il n’est pas garanti que cette fonction fournisse un tri stable lorsque le ARRAY contient l’un des Ă©lĂ©ments suivants :

    • ÉlĂ©ments de deux types numĂ©rique ou horodatage diffĂ©rents.

    • Objets contenant deux types numĂ©riques ou horodatage diffĂ©rents.

Exemples¶

L’exemple suivant renvoie un ARRAY de nombres dont les Ă©lĂ©ments sont issus d’un ARRAY d’entrĂ©e constant triĂ© par ordre croissant. Les Ă©lĂ©ments comprennent un JSON NULL (PARSE_JSON(“null”)) et un SQL NULL.

Notez que dans le ARRAY trié, les JSON NULLs (null) et les SQL NULLs (undefined) sont les derniers éléments.

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10]);
Copy
+---------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10]) |
|---------------------------------------------------|
| [                                                 |
|   0,                                              |
|   10,                                             |
|   20,                                             |
|   null,                                           |
|   undefined                                       |
| ]                                                 |
+---------------------------------------------------+

L’exemple suivant renvoie un ARRAY de nombres dont les Ă©lĂ©ments sont triĂ©s par ordre dĂ©croissant. Notez que dans le ARRAY triĂ©, les JSON NULLs (null) et les SQL NULLs (undefined) sont les premiers Ă©lĂ©ments.

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], FALSE);
Copy
+----------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], FALSE) |
|----------------------------------------------------------|
| [                                                        |
|   undefined,                                             |
|   null,                                                  |
|   20,                                                    |
|   10,                                                    |
|   0                                                      |
| ]                                                        |
+----------------------------------------------------------+

L’exemple suivant trie les Ă©lĂ©ments par ordre croissant. L’exemple dĂ©finit l’argument nulls_first sur TRUE pour placer les SQL NULLs (undefined) en premier dans le ARRAY triĂ©. (Par dĂ©faut, les SQL NULLs sont placĂ©s Ă  la fin d’un ARRAY triĂ© par ordre croissant)

Notez que nulls_first n’a aucun effet sur l’emplacement des JSON NULLs (null).

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], TRUE, TRUE);
Copy
+---------------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], TRUE, TRUE) |
|---------------------------------------------------------------|
| [                                                             |
|   undefined,                                                  |
|   0,                                                          |
|   10,                                                         |
|   20,                                                         |
|   null                                                        |
| ]                                                             |
+---------------------------------------------------------------+

L’exemple suivant trie les Ă©lĂ©ments par ordre dĂ©croissant. L’exemple dĂ©finit l’argument nulls_first sur FALSE pour placer les SQL NULLs (undefined) en dernier dans le ARRAY triĂ©. (Par dĂ©faut, les SQL NULLs sont placĂ©s au dĂ©but d’un ARRAY triĂ© par ordre dĂ©croissant)

Notez que nulls_first n’a aucun effet sur l’emplacement des JSON NULLs (null).

SELECT ARRAY_SORT([20, PARSE_JSON('null'), 0, NULL, 10], FALSE, FALSE);
Copy
+-----------------------------------------------------------------+
| ARRAY_SORT([20, PARSE_JSON('NULL'), 0, NULL, 10], FALSE, FALSE) |
|-----------------------------------------------------------------|
| [                                                               |
|   null,                                                         |
|   20,                                                           |
|   10,                                                           |
|   0,                                                            |
|   undefined                                                     |
| ]                                                               |
+-----------------------------------------------------------------+

L’exemple suivant utilise la fonction ARRAY_INSERT pour construire un ARRAY peu rempli. (L’exemple insĂšre les valeurs 1 et 2 Ă  des positions spĂ©cifiques dans le ARRAY.) L’exemple utilise ensuite la fonction ARRAY_SORT pour trier ce ARRAY.

SELECT ARRAY_INSERT(ARRAY_INSERT(ARRAY_CONSTRUCT(), 3, 2), 6, 1) arr, ARRAY_SORT(arr);
Copy
+--------------+-----------------+
| ARR          | ARRAY_SORT(ARR) |
|--------------+-----------------|
| [            | [               |
|   undefined, |   1,            |
|   undefined, |   2,            |
|   undefined, |   undefined,    |
|   2,         |   undefined,    |
|   undefined, |   undefined,    |
|   undefined, |   undefined,    |
|   1          |   undefined     |
| ]            | ]               |
+--------------+-----------------+

L’exemple suivant montre que le tri d’un ARRAY avec diffĂ©rents types numĂ©riques entraĂźne un tri instable. L’exemple utilise un ARRAY qui contient des valeurs NUMBER et une valeur REAL.

SELECT ARRAY_SORT([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1e0::REAL]) AS array_of_different_numeric_types;
Copy
+----------------------------------+
| ARRAY_OF_DIFFERENT_NUMERIC_TYPES |
|----------------------------------|
| [                                |
|   1,                             |
|   1.000000000000000e+00,         |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1,                             |
|   1                              |
| ]                                |
+----------------------------------+