- 类别:
:doc:`/sql-reference/functions-semistructured`(数组/对象)
ARRAY_GENERATE_RANGE¶
返回一个 ARRAY,其值为指定范围(如 [2, 3, 4])内的整型值。
语法¶
ARRAY_GENERATE_RANGE( <start> , <stop> [ , <step> ] )
实参¶
必填:
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);
+----------------------------+
| ARRAY_GENERATE_RANGE(2, 5) |
|----------------------------|
| [ |
| 2, |
| 3, |
| 4 |
| ] |
+----------------------------+
下面的示例返回一个 ARRAY,其中包含从 5 开始到 25 之前结束的数字范围(值的增量为 10):
SELECT ARRAY_GENERATE_RANGE(5, 25, 10);
+---------------------------------+
| ARRAY_GENERATE_RANGE(5, 25, 10) |
|---------------------------------|
| [ |
| 5, |
| 15 |
| ] |
+---------------------------------+
下面的示例返回一个 ARRAY,其中包含从 -5 开始到 -25 之前结束的数字范围(值的减量为 -10):
SELECT ARRAY_GENERATE_RANGE(-5, -25, -10);
+------------------------------------+
| ARRAY_GENERATE_RANGE(-5, -25, -10) |
|------------------------------------|
| [ |
| -5, |
| -15 |
| ] |
+------------------------------------+