GENERATE_SERIES

说明

序列生成函数,根据传入的参数的值,产生等差序列

语法

generate_series ::=

参数

int4_expression1

起始数值。

int4_expression2

终止数值。

int4_expression3

步长。

注解

如果步长为正数,代表正向递增,如果是负数,代表反向递减,缺省默认值为1。

返回值

一个类型与参数类型一致的序列

注解

目前该函数仅支持int4类型的操作

示例

示例1:获取起始值和终止值之间的序列值

--  用 generate_series 获取起始值和终止值之间的序列值(默认步长为 1)
SELECT * FROM generate_series(2,4);
GENERATE_SERIES(int)      |
--------------------------
2                         |
--------------------------
3                         |
--------------------------
4                         |
总数目:3


SELECT * FROM generate_series(-5,-3);
GENERATE_SERIES(int)      |
--------------------------
-5                        |
--------------------------
-4                        |
--------------------------
-3                        |
总数目:3


--  在不指定步长的情况下,如果起始值大于终止值,那么返回 0 行
SELECT * FROM generate_series(4,3);
GENERATE_SERIES(int)      |
总数目:0


SELECT * FROM generate_series(-3,-4);
GENERATE_SERIES(int)      |
总数目:0


--  步长为正数,起始值和终止值之间按加法生成序列,无序列则返回 0 行
SELECT * FROM generate_series(1,5,2);
GENERATE_SERIES(int)      |
--------------------------
1                         |
--------------------------
3                         |
--------------------------
5                         |
总数目:3


--  步长为负数,起始值和终止值之间按减法生成序列,无序列则返回 0 行
SELECT * FROM generate_series(5,1,-2);
GENERATE_SERIES(int)      |
--------------------------
5                         |
--------------------------
3                         |
--------------------------
1                         |
总数目:3


--  起始值与终止值至少一个若为NULL,则返回 0 行
SELECT * FROM generate_series(NULL,3,1);
GENERATE_SERIES(int)      |
总数目:0


SELECT * FROM generate_series(3,NULL,1);
GENERATE_SERIES(int)      |
总数目:0


SELECT * FROM generate_series(NULL,NULL,1);
GENERATE_SERIES(int)      |
总数目:0

-- 步长为0,则报错
SELECT * FROM generate_series(5,1,0);
ERROR, 函数的参数非法, 步长不能为0