日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL的generate_series函数应用例子

發(fā)布時(shí)間:2025/7/14 数据库 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL的generate_series函数应用例子 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

Pg中有一個(gè)很有用處的內(nèi)置函數(shù)generate_series,可以按不同的規(guī)則用來產(chǎn)生一系列的填充數(shù)據(jù)。

一、語(yǔ)法

generate_series(start,stop) --int or bigint generate_series(start,stop,step) --int or bigint generate_series(start,stop, step interval) --timestamp or timestamp with time zone 二、應(yīng)用例子 1.int類型,不寫步長(zhǎng)時(shí)默認(rèn)是1 postgres=# select generate_series(1,10);generate_series -----------------12345678910 (10 rows)postgres=# select generate_series(1,10,3);generate_series -----------------14710 (4 rows)postgres=# select generate_series(5,1);generate_series ----------------- (0 rows)postgres=# select generate_series(5,1,-1);generate_series -----------------54321 (5 rows) 2.時(shí)間類型 postgres=# select generate_series(now(),now() + '7 day','1 day');generate_series -------------------------------2012-08-27 22:12:40.915368+082012-08-28 22:12:40.915368+082012-08-29 22:12:40.915368+082012-08-30 22:12:40.915368+082012-08-31 22:12:40.915368+082012-09-01 22:12:40.915368+082012-09-02 22:12:40.915368+082012-09-03 22:12:40.915368+08 (8 rows)postgres=# select generate_series(to_date('20120827','yyyymmdd'),to_date('20120828','yyyymmdd'),'3 h');generate_series ------------------------2012-08-27 00:00:00+082012-08-27 03:00:00+082012-08-27 06:00:00+082012-08-27 09:00:00+082012-08-27 12:00:00+082012-08-27 15:00:00+082012-08-27 18:00:00+082012-08-27 21:00:00+082012-08-28 00:00:00+08 (9 rows)3.IP類型 postgres=# create table t_kenyon(id int,ip_start inet,ip_end inet); CREATE TABLE postgres=# insert into t_kenyon values(1,'192.168.1.254','192.168.2.5'); INSERT 0 1 postgres=# insert into t_kenyon values(2,'192.168.2.254','192.168.3.5'); INSERT 0 1 postgres=# insert into t_kenyon values(3,'192.168.3.254','192.168.4.5'); INSERT 0 1postgres=# select * from t_kenyon;id | ip_start | ip_end ----+---------------+-------------1 | 192.168.1.254 | 192.168.2.52 | 192.168.2.254 | 192.168.3.53 | 192.168.3.254 | 192.168.4.5 (3 rows)postgres=# select id,generate_series(0,ip_end-ip_start)+ip_start as ip_new from t_kenyon;id | ip_new ----+---------------1 | 192.168.1.2541 | 192.168.1.2551 | 192.168.2.01 | 192.168.2.11 | 192.168.2.21 | 192.168.2.31 | 192.168.2.41 | 192.168.2.52 | 192.168.2.2542 | 192.168.2.2552 | 192.168.3.02 | 192.168.3.12 | 192.168.3.22 | 192.168.3.32 | 192.168.3.42 | 192.168.3.53 | 192.168.3.2543 | 192.168.3.2553 | 192.168.4.03 | 192.168.4.13 | 192.168.4.23 | 192.168.4.33 | 192.168.4.43 | 192.168.4.5 (24 rows) 三、總結(jié)
Pg的generate_series函數(shù)對(duì)生成測(cè)試數(shù)據(jù),批量更新一定規(guī)則的數(shù)據(jù)有比較多的應(yīng)用場(chǎng)景,使用得當(dāng)可提升開發(fā)效率。另外IP的序列生成也是PG的一個(gè)亮點(diǎn)。
有兩種情況不能生成數(shù)據(jù):
1.步長(zhǎng)為正,且開始值比結(jié)束值大
2.步長(zhǎng)為負(fù),且開始值比結(jié)束值小

四、參考:
http://www.postgresql.org/docs/9.0/static/functions-srf.html http://blog.163.com/digoal@126/blog/static/163877040201111805555263/

轉(zhuǎn)載于:https://my.oschina.net/Kenyon/blog/75099

總結(jié)

以上是生活随笔為你收集整理的PostgreSQL的generate_series函数应用例子的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。