【postgres】8、Range 类型

文章目录

    • 8.17 Range 类型
      • 8.17.1 内置类型
      • 8.17.2 示例
      • 8.17.3 开闭区间
      • 8.17.4 无穷区间

https://www.postgresql.org/docs/current/rangetypes.html

8.17 Range 类型

Range 类型,可以描述一个数据区间,有明确的子类型,而且子类型应该能被排序。

8.17.1 内置类型

PostgresSQL 有如下 range 类型:

  • int4range — Range of integer, int4multirange — corresponding Multirange
  • int8range — Range of bigint, int8multirange — corresponding Multirange
  • numrange — Range of numeric, nummultirange — corresponding Multirange
  • tsrange — Range of timestamp without time zone, tsmultirange — corresponding Multirange
  • tstzrange — Range of timestamp with time zone, tstzmultirange — corresponding Multirange
  • daterange — Range of date, datemultirange — corresponding Multirange

8.17.2 示例

CREATE TABLE reservation (room int, during tsrange);
INSERT INTO reservation VALUES (1108, '[2010-01-01 14:30, 2010-01-01 15:30)');-- Containment
SELECT int4range(10, 20) @> 3; -- FALSE-- Overlaps
SELECT numrange(11.1, 22.2) && numrange(20.0, 30.0); -- 返回TRUE, 表示两个区间有交集-- Extract the upper bound
SELECT upper(int8range(15, 25)); -- 返回 25, 表示区间的上界-- Compute the intersection
SELECT int4range(10, 20) * int4range(15, 25); -- 返回[15, 20), 表示交集区间-- Is the range empty?
SELECT isempty(numrange(1, 5)); -- 返回 FALSE, 表示区间为空

8.17.3 开闭区间

每个非空区间都有两个界限,即下界和上界。这些值之间的所有点都包含在该范围内。包含边界意味着边界点本身也包括在范围内,而排除边界意味着边界点不包括在范围内。

  • [是左闭区间,]是右闭区间
  • (是左开区间,)是右开区间

函数 lower_inc 和 upper_inc 分别测试范围值的下界和上界,是否为闭区间。若为闭区间则返回 TRUE。

select lower_inc(numrange(10, 20)); -- 返回 TRUE 表示左闭区间
select upper_inc(numrange(10, 20)); -- 返回 FALSE 表示右开区间select lower_inc(tsrange('[2010-01-01 14:30, 2010-01-01 15:30]')); -- 返回 TRUE 表示左闭区间
select upper_inc(tsrange('[2010-01-01 14:30, 2010-01-01 15:30]')); -- 返回 TRUE 表示右闭区间select lower_inc(tsrange('[2010-01-01 14:30, 2010-01-01 15:30)')); -- 返回 TRUE 表示左闭区间
select upper_inc(tsrange('[2010-01-01 14:30, 2010-01-01 15:30)')); -- 返回 FLASE 表示右开区间

8.17.4 无穷区间

  • 可以没有区间左端点,比如 (,3] 则表示 <=3 的都在区间内。
  • 可以没有区间右端点,比如 (,3] 则表示 <=3 的都在区间内。
  • 可以没有区间左和右端点,这种闭区间会被 pg 默认转换为 开区间,例如 [,] 会被转换为 (,)
  • 也可以手动指定 infinity 为端点,例如:
    • [today,infinity) excludes the special timestamp value infinity,这种区间上手动指定不包含 infinity 的。
    • while [today,infinity] include it, as does [today,) and [today,]. 这些都是区间包含 infinity 的。

最重要的,还是可以用 函数 lower_inc 和 upper_inc 测试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296503.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IgH调试注意事项

1&#xff0c;不要在虚拟机测试&#xff0c;否则IgH无法收发数据包 现象&#xff1a;虚拟机中运行IgH master并绑定网卡后&#xff0c;主站由ORPHANED状态转换成IDLE状态&#xff0c;但无法收发数据报。 这是因为虚拟机用的是虚拟网卡&#xff0c;需通过iptables将数据包到转…

有关List的线程安全、高效读取:不变模式下的CopyOnWriteArrayList类、数据共享通道:BlockingQueue

有关List的线程安全 队列、链表之类的数据结构也是极常用的&#xff0c;几乎所有的应用程序都会与之相关。在java中&#xff0c; ArrayList和Vector都使用数组作为其内部实现。两者最大的不同在与Vector是线程安全的。 而ArrayList不是。此外LinkedList使用链表的数据结构实现…

【VB测绘程序设计】案例4——简单的四则运算练习Select Case语句的使用(附源码)

【VB测绘程序设计】案例4——简单的四则运算练习(附源码) 文章目录 前言一、界面预览二、程序介绍总结前言 在新手学习VB程序设计中,四则运算是基础,通过设计的TexT、按钮、label等控件,定义变量,实现简单程序的编写,提高对VB程序的入门训练。 一、界面预览 二、程序介…

【MybatisPlus快速入门】(2)SpringBoot整合MybatisPlus 之 标准数据层开发 代码示例

目录 1 标准CRUD使用2 新增3 删除4 修改5 根据ID查询6 查询所有7 MyBatis-Plus CRUD总结 之前我们已学习MyBatisPlus在代码示例与MyBatisPlus的简介&#xff0c;在这一节中我们重点学习的是数据层标准的CRUD(增删改查)的实现与分页功能。代码比较多&#xff0c;我们一个个来学习…

【开源】基于JAVA语言的企业项目合同信息系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 合同审批模块2.3 合同签订模块2.4 合同预警模块2.5 数据可视化模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 合同审批表3.2.2 合同签订表3.2.3 合同预警表 四、系统展示五、核心代码5.1 查询合同…

九、W5100S/W5500+RP2040之MicroPython开发<HTTPOneNET示例>

文章目录 1. 前言2. 平台操作流程2.1 创建设备2.2 创建数据流模板 3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代&#xff0c;MicroPython和树莓派PICO正…

2023,测试开发人的年终总结

根据TesterHome社区发帖整理。从该年终总结可以看出当前测试行业&#xff0c;哪怕是测试开发也是竞争很厉害。作为测试同仁&#xff0c;不但要掌握功能测试、接口测试、性能测试&#xff0c;掌握各种工具使用&#xff0c;还得懂开发&#xff0c;懂Java/Python&#xff0c;懂VUE…

【零基础入门Docker】什么是Dockerfile Syntax

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门Docker专栏https://blog.csdn.net/arthas777/category_12455882.html 目录 编写Dockerfile和Format的语法 2. MAINTAINER 3. RUN 4. ADD 6. ENTRYPOINT 7. CMD 8. EXPOSE 9. VOLUME 11. USER 12. ARG …

MySQL创建member表失败

最近在做一个项目&#xff0c;在台式机上可以跑通&#xff0c;也测试了各个已完成的接口&#xff0c;提交到了GitHub后想着用宿舍的电脑跑一下&#xff0c;在测试member表相关接口时就出错了。报了SQL语法错误&#xff0c;但SQL语句很简单&#xff0c;就根据手机号查询不至于出…

实习课知识整理4:点击某个商品如何跳转到并展示出商品详情页

项目情景&#xff1a;当我们点击某个商品时&#xff0c;我们需要查看商品的具体的信息并进行购买的操作 简单理解以下就是&#xff0c;当我们点击一个url链接时&#xff0c;该链接需要携带一个参数到后端&#xff0c;一般设为商品的Id&#xff0c;然后后端通过Id从数据库中查找…

NGUI基础-三大基础组件之Root组件

NGUI NGUI&#xff08;Next-Gen UI&#xff09;是一款用于Unity游戏引擎的UI插件&#xff0c;它提供了一套功能强大、灵活易用的界面开发工具。在NGUI中&#xff0c;Root&#xff08;根节点&#xff09;是一个重要的概念。 基础组件之Root Root是NGUI中的最高层级节点&#…

linux运行可执行文件,通过c语言调用java的main方法

前言&#xff1a;以前一直在做Android开发&#xff0c;在某本书上看过一句话“Android上面不只有App类的程序可以运行&#xff0c;能在linux下运行的程序&#xff0c;也可以在Android上面运行” 一.编写C语言部分代码 1.定义java.h头文件 #include <jni.h>#ifndef _JAV…