9.18. 返回集合的函数

本节描述那些可能返回多于一行的函数。目前这个类型的函数只有序列号生成函数, 如 Table 9-38 所述。

Table 9-38. 序列号生成函数

函数参数类型返回类型描述
generate_series(start, stop)intbigintsetof intsetof bigint (与参数类型相同) 生成一个数值序列,从 startstop,步进为一。
generate_series(start, stop, step)int or bigintsetof int or setof bigint (same as argument type) 生成一个数值序列,从 startstop,步进为 step

如果 step 是正数,而 start 大于 stop, 那么返回零行。想法,如果 step 是负数,start 小于 stop, 则返回零行。如果是 NULL 输入,也产生零行。step 为零则是一个错误。 下面是一些例子:

select * from generate_series(2,4);
 generate_series
-----------------
               2
               3
               4
(3 rows)

select * from generate_series(5,1,-2);
 generate_series
-----------------
               5
               3
               1
(3 rows)

select * from generate_series(4,3);
 generate_series
-----------------
(0 rows)

select current_date + s.a as dates from generate_series(0,14,7) as s(a);
   dates
------------
 2004-02-05
 2004-02-12
 2004-02-19
(3 rows)