- 类别:
: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 |
| ] |
+------------------------------------+