Catégories :

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

ARRAY_INSERT

Renvoie un tableau contenant tous les éléments du tableau source ainsi que le nouvel élément.

Syntaxe

ARRAY_INSERT( <array> , <pos> , <new_element> )
Voir aussi :

ARRAY_APPEND , ARRAY_PREPEND

Arguments

tableau

Le tableau source.

pos

Une position (basée sur zéro) dans le tableau source. Le nouvel élément est inséré à cette position. L’élément d’origine à partir de cette position (le cas échéant) et tous les éléments suivants (le cas échéant) sont décalés d’une position vers la droite dans le tableau résultant (l’insertion à la position 0 a le même effet que l’utilisation de ARRAY_PREPEND).

Une position négative est interprétée comme un index à l’arrière du tableau (par exemple, -1 entraîne l’insertion avant le dernier élément du tableau).

nouvel_élément

L’élément à insérer. Le nouvel élément est situé à la position pos. L’ordre relatif des autres éléments du tableau source est préservé.

Renvoie

Le type de données de la valeur renvoyée est ARRAY.

Notes sur l’utilisation

  • Si la valeur absolue de pos dépasse le nombre d’éléments du tableau, des éléments vides supplémentaires sont insérés entre le nouvel élément et les éléments du tableau source.

  • Pour ajouter ou préfixer des éléments à un tableau, vous devez utiliser ARRAY_APPEND ou ARRAY_PREPEND.

Exemples

Ceci montre un exemple simple d’insertion dans un tableau :

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),2,'hello');
+--------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),2,'HELLO') |
|--------------------------------------------------|
| [                                                |
|   0,                                             |
|   1,                                             |
|   "hello",                                       |
|   2,                                             |
|   3                                              |
| ]                                                |
+--------------------------------------------------+

Ceci montre une insertion qui utilise un index supérieur au nombre d’éléments existants dans le tableau.

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),5,'hello');
+--------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),5,'HELLO') |
|--------------------------------------------------|
| [                                                |
|   0,                                             |
|   1,                                             |
|   2,                                             |
|   3,                                             |
|   undefined,                                     |
|   "hello"                                        |
| ]                                                |
+--------------------------------------------------+

Cela montre une insertion qui utilise un index négatif.

SELECT ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),-1,'hello');
+---------------------------------------------------+
| ARRAY_INSERT(ARRAY_CONSTRUCT(0,1,2,3),-1,'HELLO') |
|---------------------------------------------------|
| [                                                 |
|   0,                                              |
|   1,                                              |
|   2,                                              |
|   "hello",                                        |
|   3                                               |
| ]                                                 |
+---------------------------------------------------+