Postgres 的 Range 类型
mysql 不支持 Range 类型
零、介绍
1、 适用场景:
a.可以用于实现 是否满足薪资需求 的功能
b.可以用于实现 是否符合上线时间 的功能
一、定义
1、Postgres SQL + Sequelize
| Postgres | Sequelize |
|---|---|
| 4 位整数范围, int4range | Sequelize.RANGE(Sequelize.INTEGER) |
| 8 位整数范围, int8range | Sequelize.RANGE(Sequelize.BIGINT) |
| 数值范围, numrange | Sequelize.RANGE(Sequelize.DECIMAL) |
| 无时区的时间戳范围, tsrange | |
| 有时区的时间戳范围, tstzrange | Sequelize.RANGE(Sequelize.DATE) |
| 日期范围, daterange | Sequelize.RANGE(Sequelize.DATEONLY) |
题外话:我们常用的是日期类型是
tstzrange,即有时区的时间戳范围,比如我们在中国的 2018-07-31 的 21 点整存入,数据库即显示为2018-07-31 21:00:00.000+08
CREATE TABLE "Students"
(
name VARCHAR(255),
expected_salary int4range,
)
这边我们定义了一个学生表,有“姓名”和“期望薪资”两个字段。
二、存
1、Postgres SQL
INSERT INTO "Students"
VALUES
(
'colin',
'xxx'
)
xxx 的值形如:
a. '(1000,2000]'
b. '[null,2000)'
注:
1、遵循()为开[]为闭的原则
2、null表示无限值
2、Sequelize
(1)普通写法
a. [
{ value: 1000, inclusive: false },
{ value: 2000, inclusive: true }
]
b. [
{ value: null, inclusive: true },
{ value: 2000, inclusive: false }
]
注:inclusive: true 表示闭,inclusive: fasle 表示开。
(2)省略写法
a.[1001, 2000]
b.[null, 2000]
注:遵循
()为开[]为闭的原则,但在 Sequelize 里,虽然是两元素数组的形式,即[],但实际上右边的]还是表示)的意思。
三、取
1、Postgres SQL
形如:[1001,2000)
注:格式始终为
[),即如果存的是[],取出来会被转化成[)。
2、Sequelize
形如:
[
{ value: 1000, inclusive: false },
{ value: 2000, inclusive: true }
]
四、 QUERY
1、Postgres SQL
(1)查询范围的最低和最高值
upper()、lower()
SELECT upper(expected_salary), lower(expected_salary) FROM "Students" where id = 13;
return:
upper lower
2 1
(2)检查某个值是否在给定范围内
SELECT expected_salary @> 4000 FROM "Students" where id = 13;
return:
t
2、Sequelize
sequelize 并不直接支持(上面)方便的 query
参考资料
1.[Postgres 9.2 新特性之:范围类型 (Range Types)] https://www.oschina.net/translate/postgres-9-2-highlight-range-types?print
Postgres 的 Range 类型的更多相关文章
- Postgres空间地理类型POINT POLYGON实现附近的定位和电子围栏功能
目录 需求和背景 安装插件postgis 点POINT类型和距离 表添加POINT类型 添加空间索引 插入点 两个点之间的距离 附近5公里内的点 最近的10个点 面多边形'POLYGON' 添加字段类 ...
- Postgres 的 Array 类型
mysql 不支持 Array 类型 一.Postgres 原生SQL 适用场景:可以用于实现贴标签功能 1.定义 CREATE TABLE "Students" ( name V ...
- range类型(Python)
range 不是 iterator >>> R = range(3) >>> next(R) Traceback (most recent call last): ...
- 为什么range不是迭代器?range到底是什么类型?
迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在.在关于迭代器的系列文章中(链接见文末),我至少提到了 23 种生成迭 ...
- python学习之:序列类型 之列表,元组,range
列表 列表是可变序列,通常用于存放同类项目的集合(其中精确的相似程度将根据应用而变化). class list([iterable]) 可以用多种方式构建列表: 使用一对方括号来表示空列表: [ ] ...
- Python数据类型之“序列概述与基本序列类型(Basic Sequences)”
序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list. ...
- JS 之DOM range对象
DOM范围 DOM中的range对象是DOM2中新定义的接口.通过这个对象可以选择文档中的某个区域,而不必考虑节点的界限. 创建范围 document.createRange()创建一个范围,这个范围 ...
- oracle interval-partition 解决range分区大难题
博客<oracle分区>中讲了oracle的几种分区,并且对于oracle的典型分区如Range分区和List分区给了示例. 在实际运用Range分区时,遇到了这样的难题: createt ...
- HTML5每日一练之input新增加的5种其他类型1种标签应用
今天介绍input在HTML5中的最后5种类型,分别是:number,range,search,tel和color 注意:此种类型的input在Opera10+中效果为佳,Chrome中效果不是十分好 ...
随机推荐
- 2018.12.15 bzoj3998: [TJOI2015]弦论(后缀自动机)
传送门 后缀自动机基础题. 求第kkk小的子串(有可能要求本质不同) 直接建出samsamsam,然后给每个状态赋值之后在上面贪心选最小的(过程可以类比主席树/平衡树的查询操作)即可. 代码: #in ...
- C++中string的使用
概述 这篇博文为了记录C++中string的使用,用到一点补充一点. 预备 使用string之前需要包含头文件 #include<iostream> #include<string& ...
- devexpress 的combobox怎样只能选择不能输入
我们知道listbox和combobox的区别就是listbox是下拉列表框,只能下拉,不支持在listbox中自定义输入,而combobox是textbox和listbox的合体,被称为组合框. c ...
- 学以致用三----centos7.2基本环境补充
补充: 在上一篇里,加时间戳 echo ‘export HISTTIMEFORMAT ="%F %T `whoami`" ’ >> /etc/profile sourc ...
- fPLL结构及动态配置
输入参考时钟 从上图可以看到参考时钟输入的几种类型. 注意:fPLL的校正是由CLKUSR来驱动的,这个时钟必须要保持稳定. 参考时钟利用器 N计数器 N计数器会把参考时钟利用器输出进行分 ...
- 基于脚本的nodemanager管理器
Step 6: Configure Node Manager on the Managed Servers虚拟机环境: 管理服务器IP:192.168.227.10 AdminServer 受管服务 ...
- (转)设置VMWARE通过桥接方式使用主机无线网卡上网
转自:http://www.cnblogs.com/liongis/p/3265458.html 环境:WIN7旗舰版,台式机,U盘无线上网卡. 虚拟软件:VMware9.0,虚拟系统:CentOS6 ...
- (转)使用 vs.php 调试PHP
转自:http://www.jb51.net/article/24618.htm 早先在asp横行的年代,php和asp一样,大都都是html中夹杂代码,说实话,这时候IDE的确用处不是很大,倒是 ...
- linux初学terminal命令(1)ls、cd、su、man、pwd、useradd、passwd、cat、Ctrl+C、Ctrl+Z、Ctrl+L
terminal命令(terminal终端对应windows 按下win(linux下叫Super键)+r,输入cmd(command,命令),召唤出来的Dos控制台) 1. ls(英文list):简 ...
- 对工程测量大师App的评价
我是测绘工程专业的学生,去年由于同学的推荐我开始使用工程测量大师这款App. 工程测量大师是一款非常方便的测量计算软件,用户将测量的数据输入后,软件就可以帮助你得到精确的计算结果.操作非常简单,使用起 ...