为什么80%的码农都做不了架构师?>>>   

Pg中有一个很有用处的内置函数generate_series,可以按不同的规则用来产生一系列的填充数据。

一、语法

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

二、应用例子

1.int类型,不写步长时默认是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.时间类型
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)

三、总结
Pg的generate_series函数对生成测试数据,批量更新一定规则的数据有比较多的应用场景,使用得当可提升开发效率。另外IP的序列生成也是PG的一个亮点。
有两种情况不能生成数据:
1.步长为正,且开始值比结束值大
2.步长为负,且开始值比结束值小

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

转载于:https://my.oschina.net/Kenyon/blog/75099

PostgreSQL的generate_series函数应用例子相关推荐

  1. PostgreSQL的generate_series函数应用

    一.简介 PostgreSQL 中有一个很有用处的内置函数generate_series,可以按不同的规则产生一系列的填充数据. 二.语法 函数 参数类型 返回类型 描述 generate_serie ...

  2. postgreSQL 的generate_series函数

    Series Generating Functions http://www.postgresql.org/docs/9.4/static/functions-srf.html

  3. PostgreSQL使用generate_series函数 填充数据(插入数据)

    select x, y, generate_series(-1,1) as x_g, value from test_mov_avg 细看 https://www.cnblogs.com/mchina ...

  4. PostgreSQL的generate_series的函数应用

    一.简介 PostgreSQL 中有一个很有用的内置函数generate_series,可以按不同的规则产生一系列的填充数据. 二.语法 函数 参数类型 返回类型 描述 generate_series ...

  5. Postgresql generate_series函数使用

    generate_series函数使用 文章目录 generate_series函数使用 **一.简介** **二.语法** **三.实例 3.1) int 类型 3.2) 时间类型 3.3) IP类 ...

  6. PostgreSQL 字符串分隔函数(regexp_split_to_table、regexp_split_to_array)  发表于 2020-06-01 |  阅读次数: 394

    转载:https://zhangzw.com/posts/20200601.html PostgreSQL 字符串分隔函数(regexp_split_to_table.regexp_split_to_ ...

  7. PostgreSQL数组操作符函数

    9.18. 数组函数和操作符 表 9-45显示了可以用于 array 类型的操作符. 表 9-45. Array 操作符 操作符 描述 例子 结果 = 等于 ARRAY[1.1,2.1,3.1]::i ...

  8. oracle创建函数和调用存储过程和调用函数的例子(区别)

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

  9. oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...

    创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...

最新文章

  1. OpenWRT中运行脚本报错
  2. 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
  3. 学习C/C++的简单方法
  4. 使用XStream注解处理复杂xml的属性及数据集合(xml转对象)
  5. arcgis desktop 10.1 license manager无法启动问题解决
  6. android field 类型,Gradle buildConfigField 使用Hashmap ArrayList 等类型
  7. caj文件浏览器_史上最全:提高律师工作效率必不可少的27款浏览器插件
  8. 粒子效果的开始和结束颜色属性
  9. win11升级到一半撤销怎么办 windows11升级到一半撤销的解决方法
  10. android zip4j之--解压zip文件并实时显示解压进度
  11. 我的世界seus光影java版下载_我的世界0.17SEUS PE光影材质包(水反高清)下载
  12. 震旦ad369s_震旦ad369s打印机驱动(震旦ad369s驱动程序) 安装版
  13. VBM_DARTEL算法对灰质变化的计算
  14. JavaScript在线代码编辑器-技术选型
  15. 德州仪器官网TI实时监控自动抢购下单
  16. 漫漫Java学习路,第十四天
  17. java敏捷开发的落地与实施_20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告...
  18. 循环神经网络-高级篇RNN Classifier
  19. STM32之光照强度(BH1750)
  20. Educational Codeforces Round 88 (Rated for Div. 2)C. Mixing Water(数学+二分法)---题解

热门文章

  1. 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 1.1 从解决方案中甄别需求...
  2. 关于sqlserver和oracle的一点感受
  3. [转]ANT技术研究--与VSS整合自动获取源码进行编译
  4. mfc窗口右下角如何显示一个三角形图案_大型建筑,如何做到室内外设计元素统一?...
  5. centos6 安装 mantisbt-1.2.8 —— (3)Linux系统下yum源配置(Centos 6)
  6. Spring MVC - URL路径映射
  7. C++11 智能指针unique_ptr使用 -- 以排序二叉树为例
  8. vmware开发包之vSphere Management SDK
  9. LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
  10. .NET Framework介绍