类别:

:doc:`/sql-reference/functions-semistructured`(数组/对象)

ARRAY_GENERATE_RANGE

返回一个 ARRAY,其值为指定范围(如 [2, 3, 4])内的整型值。

语法

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

实参

必填:

start

要返回的数字范围内的第一个数字。

必须指定计算结果为 INTEGER 值的表达式。

stop

范围中的最后一个数字。请注意,此数字 不包括 在返回的数字范围内。

例如,ARRAY_GENERATE_RANGE(1, 5) 返回 [1, 2, 3, 4]``(不包括 ``5)。

必须指定计算结果为 INTEGER 值的表达式。

可选:

step

数组中每个后续数字的递增或递减量。例如:

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

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

可以指定正数或负数。不能指定 0。

默认值为 1

返回

指定范围内的整数 ARRAY。

如果任何实参为 NULL,则函数返回 NULL。

使用说明

  • start 之后,每个后续元素增大或减小 step`(具体取决于 :samp:`step 是正还是负),一直到(但不包括):samp:{stop}

    例如:

    • ARRAY_GENERATE_RANGE(10, 50, 10) 返回 [10, 20, 30, 40]

    • ARRAY_GENERATE_RANGE(-10, -50, -10) 返回 [-10, -20, -30, -40]

  • 该函数在以下任一情况下返回空 ARRAY :

    • start = stop

    • step 是正数,并且 start > stop

    • step 是负数,并且 start < stop

    例如:

    • ARRAY_GENERATE_RANGE(2, 2, 4) 返回 []

    • ARRAY_GENERATE_RANGE(8, 2, 2) 返回 []

    • ARRAY_GENERATE_RANGE(2, 8, -2) 返回 []

示例

下面的示例返回一个 ARRAY,其中包含从 2 开始到 5 之前结束的数字范围:

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

下面的示例返回一个 ARRAY,其中包含从 5 开始到 25 之前结束的数字范围(值的增量为 10):

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

下面的示例返回一个 ARRAY,其中包含从 -5 开始到 -25 之前结束的数字范围(值的减量为 -10):

SELECT ARRAY_GENERATE_RANGE(-5, -25, -10);
Copy
+------------------------------------+
| ARRAY_GENERATE_RANGE(-5, -25, -10) |
|------------------------------------|
| [                                  |
|   -5,                              |
|   -15                              |
| ]                                  |
+------------------------------------+
语言: 中文