Catégories :

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

ARRAY_GENERATE_RANGE

Renvoie un ARRAY de valeurs entières comprises dans un intervalle spécifié (par exemple [2, 3, 4]).

Syntaxe

ARRAY_GENERATE_RANGE( <start> , <stop> [ , <step> ] )
Copy

Arguments

Obligatoire :

start

Le premier nombre de la plage de nombres à renvoyer.

Vous devez spécifier une expression qui donne une valeur INTEGER.

stop

Le dernier nombre de la plage. Notez que ce nombre n’est pas inclus dans la plage de nombres renvoyés.

Par exemple, ARRAY_GENERATE_RANGE(1, 5) renvoie [1, 2, 3, 4] (qui n’inclut pas 5).

Vous devez spécifier une expression qui donne une valeur INTEGER.

Facultatif :

step

Le montant à incrémenter ou décrémenter pour chaque nombre suivant dans le tableau. Par exemple :

  • ARRAY_GENERATE_RANGE(0, 16, 5) renvoie [0, 5, 10, 15]

  • ARRAY_GENERATE_RANGE(0, -16, -5) renvoie [0, -5, -10, -15]

Vous pouvez spécifier un nombre positif ou négatif. Vous ne pouvez pas spécifier 0.

La valeur par défaut est 1.

Renvoie

Un ARRAY d’entiers dans l’intervalle spécifié.

Si l’un des arguments est NULL, la fonction renvoie NULL.

Notes sur l’utilisation

  • Après start, chaque élément suivant augmente ou diminue de step (selon que step est positif ou négatif) jusqu’à stop (non compris).

    Par exemple :

    • ARRAY_GENERATE_RANGE(10, 50, 10) renvoie [10, 20, 30, 40].

    • ARRAY_GENERATE_RANGE(-10, -50, -10) renvoie [-10, -20, -30, -40].

  • La fonction renvoie un ARRAY vide dans l’une des conditions suivantes :

    • start = stop.

    • step est un nombre positif et start > stop.

    • step est un nombre négatif et start < stop.

    Par exemple :

    • ARRAY_GENERATE_RANGE(2, 2, 4) renvoie [].

    • ARRAY_GENERATE_RANGE(8, 2, 2) renvoie [].

    • ARRAY_GENERATE_RANGE(2, 8, -2) renvoie [].

Exemples

L’exemple suivant renvoie un ARRAY contenant une plage de nombres commençant par 2 et se terminant avant 5 :

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

L’exemple suivant renvoie un ARRAY contenant une plage de nombres commençant par 5 et se terminant avant 25, dont la valeur augmente de 10 :

SELECT ARRAY_GENERATE_RANGE(5, 25, 10);
Copy
+---------------------------------+
| ARRAY_GENERATE_RANGE(5, 25, 10) |
|---------------------------------|
| [                               |
|   5,                            |
|   15                            |
| ]                               |
+---------------------------------+

L’exemple suivant renvoie un ARRAY contenant une plage de nombres commençant par -5 et se terminant avant -25, avec une valeur décroissante de -10 :

SELECT ARRAY_GENERATE_RANGE(-5, -25, -10);
Copy
+------------------------------------+
| ARRAY_GENERATE_RANGE(-5, -25, -10) |
|------------------------------------|
| [                                  |
|   -5,                              |
|   -15                              |
| ]                                  |
+------------------------------------+