本节描述那些可能返回多于一行的函数。目前这个类型的函数只有序列号生成函数,如表9-39所述。
表9-39. 序列号生成函数
| 函数 | 参数类型 | 返回类型 | 描述 |
|---|---|---|---|
generate_series(start, stop) | int 或 bigint | setof int 或 setof bigint (与参数类型相同) | 生成一个数值序列,从 start 到 stop ,步长为 1 。 |
generate_series(start, stop, step) | int 或 bigint | setof int 或 setof bigint (与参数类型相同) | 生成一个数值序列,从 start 到 stop ,步长为 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)