Перейти к основному содержимому

array_generate

Описание

Возвращает массив различных значений в диапазоне, указанном параметрами start и end, с шагом step.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

ARRAY array_generate([start,] end [, step])

Параметры

  • start: необязательный, начальное значение. Должно быть константой или столбцом, который вычисляется как TINYINT, SMALLINT, INT, BIGINT или LARGEINT. Значение по умолчанию — 1.
  • end: обязательный, конечное значение. Должно быть константой или столбцом, который вычисляется как TINYINT, SMALLINT, INT, BIGINT или LARGEINT.
  • step: необязательный, шаг приращения. Должен быть константой или столбцом, который вычисляется как TINYINT, SMALLINT, INT, BIGINT или LARGEINT. Когда start меньше end, значение по умолчанию — 1. Когда start больше end, значение по умолчанию — -1.

Возвращаемое значение

Возвращает массив, элементы которого имеют тот же тип данных, что и входные параметры.

Примечания по использованию

  • Если любой входной параметр является столбцом, необходимо указать таблицу, к которой принадлежит столбец.
  • Если любой входной параметр является столбцом, необходимо указать другие параметры. Значения по умолчанию не поддерживаются.
  • Если любой входной параметр равен NULL, возвращается NULL.
  • Если step равен 0, возвращается пустой массив.
  • Если start равен end, возвращается это значение.

Примеры

Входные параметры являются константами

mysql> select array_generate(9);
+---------------------+
| array_generate(9) |
+---------------------+
| [1,2,3,4,5,6,7,8,9] |
+---------------------+

select array_generate(9,12);
+-----------------------+
| array_generate(9, 12) |
+-----------------------+
| [9,10,11,12] |
+-----------------------+

select array_generate(9,6);
+----------------------+
| array_generate(9, 6) |
+----------------------+
| [9,8,7,6] |
+----------------------+

select array_generate(9,6,-1);
+--------------------------+
| array_generate(9, 6, -1) |
+--------------------------+
| [9,8,7,6] |
+--------------------------+

select array_generate(3,3);
+----------------------+
| array_generate(3, 3) |
+----------------------+
| [3] |
+----------------------+

Один из входных параметров является столбцом

CREATE TABLE `array_generate`
(
`c1` TINYINT,
`c2` SMALLINT,
`c3` INT
)
ENGINE = OLAP
DUPLICATE KEY(`c1`)
DISTRIBUTED BY HASH(`c1`);

INSERT INTO `array_generate` VALUES
(1, 6, 3),
(2, 9, 4);
mysql> select array_generate(1,c2,2) from `array_generate`;
+--------------------------+
| array_generate(1, c2, 2) |
+--------------------------+
| [1,3,5] |
| [1,3,5,7,9] |
+--------------------------+