Categorias:

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

ARRAY_GENERATE_RANGE

Retorna uma ARRAY de valores inteiros em um intervalo especificado (por exemplo, [2, 3, 4]).

Sintaxe

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

Argumentos

Obrigatório:

start

O primeiro número no intervalo de números a ser retornado.

Você precisa especificar uma expressão que seja avaliada como um valor INTEGER.

stop

O último número no intervalo. Observe que esse número não está incluído no intervalo de números retornados.

Por exemplo, ARRAY_GENERATE_RANGE(1, 5) retorna [1, 2, 3, 4] (que não inclui 5).

Você precisa especificar uma expressão que seja avaliada como um valor INTEGER.

Opcional:

step

O valor para incrementar ou decrementar cada número subsequente na matriz. Por exemplo:

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

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

Você pode especificar um número positivo ou negativo. Não é possível especificar 0.

O valor padrão é 1.

Retornos

Uma ARRAY de números inteiros no intervalo especificado.

Se algum dos argumentos for NULL, a função retornará NULL.

Notas de uso

  • Após start, cada elemento subsequente aumenta ou diminui em step (dependendo do fato de step ser positivo ou negativo) até stop (mas não incluindo).

    Por exemplo:

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

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

  • A função retorna uma ARRAY vazia em qualquer uma das seguintes condições:

    • start = stop.

    • step é um número positivo e start > stop.

    • step é um número negativo e start < stop.

    Por exemplo:

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

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

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

Exemplos

O exemplo a seguir retorna uma ARRAY contendo um intervalo de números que começa em 2 e termina antes de 5:

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

O exemplo a seguir retorna uma ARRAY contendo um intervalo de números que começa em 5 e termina antes de 25, aumentando o valor em 10:

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

O exemplo a seguir retorna uma ARRAY contendo um intervalo de números que começa em -5 e termina antes de -25, diminuindo o valor em -10:

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