メインコンテンツまでスキップ

array_generate

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 に評価される列である必要があります。startend より小さい場合、デフォルト値は 1 です。startend より大きい場合、デフォルト値は -1 です。

戻り値

入力パラメータと同じデータ型を持つ配列が返されます。

使用上の注意

  • 入力パラメータのいずれかが列の場合、列が所属するテーブルを指定する必要があります。
  • 入力パラメータのいずれかが列の場合、他のパラメータを指定する必要があります。デフォルト値はサポートされていません。
  • 入力パラメータのいずれかが NULL の場合、NULL が返されます。
  • step が 0 の場合、空の配列が返されます。
  • startend に等しい場合、その値が返されます。

入力パラメータが定数の場合

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