PostgreSQL 9.4 : 返回结果集函数增加 WITH ORDINALITY 属性

当 from 语句后面的函数加上 WITH ORDINALITY 属性后,那么返回的结果集将增加一个整数列,这个整数列从 1 开始,并且按 1 递增,例如:

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
francs=# select * from generate_series(4,6) with ordinality; 
generate_series | ordinality
-----------------+------------
4 | 1
5 | 2
6 | 3
(3 rows)

francs=# select * from pg_ls_dir('pg_log') with ordinality limit 3;
pg_ls_dir | ordinality
----------------------------------+------------
postgresql-2014-05-21_004931.csv | 1
postgresql-2014-05-21_005605.csv | 2
postgresql-2014-05-21_031005.csv | 3
(3 rows)

备注:新增的列名默认为 ordinality,也可以手工更改列名,如下:

指定列名

1
2
3
4
5
6
7
francs=# select * from pg_ls_dir('pg_log') with ordinality as t(csvfile_name,num) limit 3;      
csvfile_name | num
----------------------------------+-----
postgresql-2014-05-21_004931.csv | 1
postgresql-2014-05-21_005605.csv | 2
postgresql-2014-05-21_031005.csv | 3
(3 rows)

备注: 文档上说这个属性对于返回结果集的函数特别有用,例如 unnest()。

Unnest()函数拆数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
francs=# select array[4,5,6,7];
array
-----------
{4,5,6,7}
(1 row)

francs=# select * from unnest(array[4,5,6,7]) with ordinality;
unnest | ordinality
--------+------------
4 | 1
5 | 2
6 | 3
7 | 4
(4 rows)

参考

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/tech/database/238060.html

(0)
上一篇 2022年1月30日 08:13
下一篇 2022年1月30日 08:13

相关推荐

发表回复

登录后才能评论