PostgreSQL的generate_series函数应用例子
为什么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函数应用例子相关推荐
- PostgreSQL的generate_series函数应用
一.简介 PostgreSQL 中有一个很有用处的内置函数generate_series,可以按不同的规则产生一系列的填充数据. 二.语法 函数 参数类型 返回类型 描述 generate_serie ...
- postgreSQL 的generate_series函数
Series Generating Functions http://www.postgresql.org/docs/9.4/static/functions-srf.html
- PostgreSQL使用generate_series函数 填充数据(插入数据)
select x, y, generate_series(-1,1) as x_g, value from test_mov_avg 细看 https://www.cnblogs.com/mchina ...
- PostgreSQL的generate_series的函数应用
一.简介 PostgreSQL 中有一个很有用的内置函数generate_series,可以按不同的规则产生一系列的填充数据. 二.语法 函数 参数类型 返回类型 描述 generate_series ...
- Postgresql generate_series函数使用
generate_series函数使用 文章目录 generate_series函数使用 **一.简介** **二.语法** **三.实例 3.1) int 类型 3.2) 时间类型 3.3) IP类 ...
- 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_ ...
- PostgreSQL数组操作符函数
9.18. 数组函数和操作符 表 9-45显示了可以用于 array 类型的操作符. 表 9-45. Array 操作符 操作符 描述 例子 结果 = 等于 ARRAY[1.1,2.1,3.1]::i ...
- oracle创建函数和调用存储过程和调用函数的例子(区别)
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
最新文章
- OpenWRT中运行脚本报错
- 非文学翻译理论与实践_北外“欧洲非通用语文学翻译与研究中心”正式成立
- 学习C/C++的简单方法
- 使用XStream注解处理复杂xml的属性及数据集合(xml转对象)
- arcgis desktop 10.1 license manager无法启动问题解决
- android field 类型,Gradle buildConfigField 使用Hashmap ArrayList 等类型
- caj文件浏览器_史上最全:提高律师工作效率必不可少的27款浏览器插件
- 粒子效果的开始和结束颜色属性
- win11升级到一半撤销怎么办 windows11升级到一半撤销的解决方法
- android zip4j之--解压zip文件并实时显示解压进度
- 我的世界seus光影java版下载_我的世界0.17SEUS PE光影材质包(水反高清)下载
- 震旦ad369s_震旦ad369s打印机驱动(震旦ad369s驱动程序) 安装版
- VBM_DARTEL算法对灰质变化的计算
- JavaScript在线代码编辑器-技术选型
- 德州仪器官网TI实时监控自动抢购下单
- 漫漫Java学习路,第十四天
- java敏捷开发的落地与实施_20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告...
- 循环神经网络-高级篇RNN Classifier
- STM32之光照强度(BH1750)
- Educational Codeforces Round 88 (Rated for Div. 2)C. Mixing Water(数学+二分法)---题解
热门文章
- 《敏捷可执行需求说明 Scrum提炼及实现技术》—— 1.1 从解决方案中甄别需求...
- 关于sqlserver和oracle的一点感受
- [转]ANT技术研究--与VSS整合自动获取源码进行编译
- mfc窗口右下角如何显示一个三角形图案_大型建筑,如何做到室内外设计元素统一?...
- centos6 安装 mantisbt-1.2.8 —— (3)Linux系统下yum源配置(Centos 6)
- Spring MVC - URL路径映射
- C++11 智能指针unique_ptr使用 -- 以排序二叉树为例
- vmware开发包之vSphere Management SDK
- LeetCode:104_Maximum Depth of Binary Tree | 二叉树的最大深度 | Easy
- .NET Framework介绍