postgresql表记录返回函数

数组中有一些类似的函数比如unnest也会返回表记录集,这里主要将两个函数

generate_series

int,bigint 入参

db01=# select generate_series(1,6);
 generate_series 
-----------------
               1
               2
               3
               4
               5
               6
(6 rows)

db01=# select generate_series(1,6,2);
 generate_series 
-----------------
               1
               3
               5
(3 rows)

db01=# select generate_series(0,-6,-2);
 generate_series 
-----------------
               0
              -2
              -4
              -6
(4 rows)

timestamp,timestamptz

db01=# select generate_series('2015-1-1'::timestamp,'2015-1-4'::timestamp,interval '1 day');
   generate_series   
---------------------
 2015-01-01 00:00:00
 2015-01-02 00:00:00
 2015-01-03 00:00:00
 2015-01-04 00:00:00
(4 rows)

generate_subscripts

这个函数是为了获取数组中特定维度下元素的下标

db01=# select array_1,generate_subscripts(array_1,1) from t_array;
                   array_1                    | generate_subscripts 
----------------------------------------------+---------------------
 {1,2,3}                                      |                   1
 {1,2,3}                                      |                   2
 {1,2,3}                                      |                   3
 {{1,2,3},{4,5,6},{7,8,9}}                    |                   1
 {{1,2,3},{4,5,6},{7,8,9}}                    |                   2
 {{1,2,3},{4,5,6},{7,8,9}}                    |                   3
 {1,2,3,4}                                    |                   1
 {1,2,3,4}                                    |                   2
 {1,2,3,4}                                    |                   3
 {1,2,3,4}                                    |                   4
 {{{1,2},{3,4}},{{5,6},{6,7}},{{8,9},{9,10}}} |                   1
 {{{1,2},{3,4}},{{5,6},{6,7}},{{8,9},{9,10}}} |                   2
 {{{1,2},{3,4}},{{5,6},{6,7}},{{8,9},{9,10}}} |                   3
 [-1:1]={1,2,3}                               |                  -1
 [-1:1]={1,2,3}                               |                   0
 [-1:1]={1,2,3}                               |                   1
(16 rows)

generate_series很多时候用在制作测试数据来使用

关键字 with ordinality

db01=# select * from generate_subscripts('{{1,2,3},{4,5,6},{7,8,9}}'::int[],2) with ordinality;
 generate_subscripts | ordinality 
---------------------+------------
                   1 |          1
                   2 |          2
                   3 |          3
(3 rows)

有点类似于oracle中的rownum 但是限制是只能放在from语句中,并且只能跟随着函数. 也就是说函数返回表记录集结果的,并且将此函数放在from语句中作为表来使用的可以跟with ordinality 参考:http://www.postgresql.org/docs/current/static/sql-select.html

//END

转载于:https://my.oschina.net/hippora/blog/381887

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值