跳到主要内容
版本: 最新版本-3.5

array_generate

返回一个数组,其中包含由startend指定的范围内的不同值,增量为step

此函数从 v3.1 开始支持。

语法

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] |
+--------------------------+