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 类型的更多相关文章

  1. Postgres空间地理类型POINT POLYGON实现附近的定位和电子围栏功能

    目录 需求和背景 安装插件postgis 点POINT类型和距离 表添加POINT类型 添加空间索引 插入点 两个点之间的距离 附近5公里内的点 最近的10个点 面多边形'POLYGON' 添加字段类 ...

  2. Postgres 的 Array 类型

    mysql 不支持 Array 类型 一.Postgres 原生SQL 适用场景:可以用于实现贴标签功能 1.定义 CREATE TABLE "Students" ( name V ...

  3. range类型(Python)

    range 不是 iterator >>> R = range(3) >>> next(R) Traceback (most recent call last): ...

  4. 为什么range不是迭代器?range到底是什么类型?

    迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在.在关于迭代器的系列文章中(链接见文末),我至少提到了 23 种生成迭 ...

  5. python学习之:序列类型 之列表,元组,range

    列表 列表是可变序列,通常用于存放同类项目的集合(其中精确的相似程度将根据应用而变化). class list([iterable]) 可以用多种方式构建列表: 使用一对方括号来表示空列表: [ ] ...

  6. Python数据类型之“序列概述与基本序列类型(Basic Sequences)”

    序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list. ...

  7. JS 之DOM range对象

    DOM范围 DOM中的range对象是DOM2中新定义的接口.通过这个对象可以选择文档中的某个区域,而不必考虑节点的界限. 创建范围 document.createRange()创建一个范围,这个范围 ...

  8. oracle interval-partition 解决range分区大难题

    博客<oracle分区>中讲了oracle的几种分区,并且对于oracle的典型分区如Range分区和List分区给了示例. 在实际运用Range分区时,遇到了这样的难题: createt ...

  9. HTML5每日一练之input新增加的5种其他类型1种标签应用

    今天介绍input在HTML5中的最后5种类型,分别是:number,range,search,tel和color 注意:此种类型的input在Opera10+中效果为佳,Chrome中效果不是十分好 ...

随机推荐

  1. LD_LIBRARY_PATH

    LD_LIBRARY_PATH是Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径. 在linux下可以用export命令来设置这个值,比如 在linux ...

  2. php使用include报错require_once(../include.php): failed to open stream: No such file or directo

    引入路径的问题,建议加入include_once $_SERVER['DOCUMENT_ROOT']."/include.php";意思是获取网站根目中的include.php 截 ...

  3. 2019.02.09 bzoj4455: [Zjoi2016]小星星(容斥原理+dp)

    传送门 题意简述:给一张图和一棵树(点数都为n≤17n \le17n≤17),问有多少种给树的标号方法方法使得图中去掉多余的边之后和树一模一样. 思路: 容斥好题啊. 考虑fi,jf_{i,j}fi, ...

  4. atcoder题目合集(持续更新中)

    Choosing Points 数学 Integers on a Tree 构造 Leftmost Ball 计数dp+组合数学 Painting Graphs with AtCoDeer tarja ...

  5. hdu 1540(线段树区间合并)

    题目链接:传送门 参考文章:传送门 题意:n个数字初始连在一条线上,有三种操作, D x表示x号被摧毁: R 表示恢复剩下的通路 Q表示查询标号为x所在的串的最长长度. 思路:线段树的区间合并. #i ...

  6. KAFKA 监控管理界面 KAFKA EAGLE 安装

    概述 Kafka Eagle监控系统是一款用来监控Kafka集群的工具,目前更新的版本是v1.2.3,支持管理多个Kafka集群.管理Kafka主题(包含查看.删除.创建等).消费者组合消费者实例监控 ...

  7. 添加全局函数$.extend和对象方法$.fn

    ## $(function () { $.fn.shadow = function (opts) { return this.each(function () { var defaults = { / ...

  8. 1.gil全局解释器锁, 2. 死锁与递归锁 3. 信号量 4. Event事件 5. 线程queue

    gil本质就是一把互斥锁,相当于执行权限,每个进程都会存在一把gil,同一进程内的多个线程必须抢到gil 之后才能使用cpython解释器来执行自己的代码,同一进程下的多线程不能并行,但可以实现并发 ...

  9. (转)MyEclipse10下创建web项目并发布到Tomcat

    转自:http://blog.sina.com.cn/s/blog_699d3f1b01012spf.html   MyEclipse10下创建web项目并发布到Tomcat 1.软件安装(不作详细描 ...

  10. spring-事件通知实现

    ok,今天不知道看啥来着,突然想起来spring内部的事件通知的实现,其实比较简单,简要记一下.然后又回顾了下eventbus的实现,其实俩者的实现方式大同小异吧,只是spring的很多操作都可以直接 ...