原文链接

BETWEEN的作用

BETWEEN 操作符用于选取介于两个值之间的数据范围内的值。

BETWEEN的边界

BETWEEN运算符选择给定范围内的值。值可以是数字,文本或日期。

BETWEEN运算符是包含性的:包括开始和结束值,等价于>= AND <=

BETWEEN的语法

SELECT column_name(s) FROM table_name
WHERE column_name BETWEEN value1 AND value2;

示例数据库

以下是"Products"表中的数据:

BETWEEN 实例

以下SQL语句选择价格在30到60之间的所有产品:

实例

  1. SELECT * FROM Products
    WHERE 价格 BETWEEN 30 AND 60;

结果:

可以看到 价格 那一列的数据都是介于30(包含)和60(包含)之间的

NOT BETWEEN 实例

要显示前面示例范围之外的产品,请使用NOT BETWEEN:

实例

  1. SELECT * FROM Products
    WHERE 价格 NOT BETWEEN 30 AND 60;

    SELECT * FROM Products
    WHERE NOT  价格 BETWEEN 30 AND 60;

这里的NOT位置可以在列的前面或者后面,结果都是一样的,只是个人写法习惯

结果:

价格那一列就会显示排除了在30到60之间的数了。

带有 IN 的 BETWEEN 操作符实例

以下SQL语句选择价格在10到60之间但名称不是大米和香蕉的所有产品:

实例

  1. SELECT * FROM Products
    WHERE (价格 BETWEEN 10 AND 60)
    AND 名称 NOT  IN ('大米','香蕉');

因为大米和香蕉都是字符类型,所以要用单引号('')

结果:

可以看到价格一列均满足10到60之间,名称一列香蕉(45.00)的价格本来也符合,但是因为我们用NOT IN把他排除了,所以也不显示出来。

带有文本值的 BETWEEN 操作符实例

以下SQL语句选择所有带有名称 BETWEEN'面包'和'香蕉'的产品:

实例

  1. SELECT * FROM Products
    WHERE 名称 BETWEEN '面包' AND '香蕉'

结果:

你注意到了吗?

为什么会出现苹果呢?

这是因为数据库在进行筛选时是按照名称拼音首字母的ASCII进行排序的,面包的首字母是M,香蕉的首字母是X,而苹果的首字母是P正好介于他们之间,所以被包含了。

那为什么又没有雪梨呢?雪梨的首字母也是X啊?

数据库在首字母相同时会继续比较第二个字母,如果第二个也相同依次往下比较,直到全部对比完。这里香蕉的全拼是XIANGJIAO,而雪梨的全拼是XUELI,很明显按升序排列第二个字母U比字母I大,它已经超出了字母I这个上限的范围,所以雪梨被排除了。

带有文本值的 NOT BETWEEN 操作符实例

以下SQL语句选择名称不是BETWEEN'面包'和'香蕉'的所有产品:

实例

  1. SELECT * FROM Products
    WHERE 名称 NOT BETWEEN '面包' AND '香蕉'

结果:

排除掉面包和香蕉之间的数就剩下大米和雪梨了。

日期边界问题

示例表Orders

下面是选自 "Orders" 表的数据:

带有日期值的 BETWEEN 操作符实例

以下 SQL 语句选取 订单日期 介于 '2018-06-28' 和 '2018-09-28' 之间的所有订单:

实例

  1. SELECT * FROM Orders
    WHERE  订单日期 BETWEEN '2018-06-28' AND '2018-09-28';

结果:

请注意,BETWEEN AND在处理日期可能会有你意向不到的结果

SQL中 between and是包括边界值的,not between不包括边界值,不过如果使用between and 限定日期需要注意,如果and后的日期是到天的,那么默认为00:00:00 例如:and 后的日期为2018年09月28日,就等价于2018-09-28 00:00:00 ,那么2018-09-28 11:24:54.000的数据就查不到了,如果要查到2018-09-28这一整天的数据,那么在取值的时候需要加1天,即BETWEEN '2018-06-28' AND '2018-09-29',这样返回的就是6月28日(含)到9月28日(含)的所有数据了。

SQL学习——BETWEEN运算符的更多相关文章

  1. SQL学习——IN运算符

    IN的作用 IN运算符允许您在WHERE子句中指定多个值. IN运算符是多个OR条件的简写. IN的语法 SELECT column_name(s) FROM table_name WHERE col ...

  2. SQL学习——LIKE运算符

    原文链接 LIKE 作用 在WHERE子句中使用LIKE运算符来搜索列中的指定模式. 有两个通配符与LIKE运算符一起使用: % - 百分号表示零个,一个或多个字符 _ - 下划线表示单个字符 注意: ...

  3. C++学习之运算符重载的总结

    C++学习之运算符重载的总结              运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用域不同类型的数据导致不同行为的发生,C++为运算符重载提供了一种方法,即运算符重载函数 ...

  4. ORALCE PL/SQL学习笔记

    ORALCE  PL/SQL学习笔记 详情见自己电脑的备份数据资料

  5. TERADATA SQL学习随笔<一>

    此博客内容简介及目录 http://www.cnblogs.com/weibaar/p/6644261.html 最近在TERADATA环境学习SQL.在这里记录一下学习中查过的知识点,作为备案. 目 ...

  6. SQL学习(时间,存储过程,触发器)

    SQL学习 几个操作时间的函数 --datapart 获取时间中的年月日时分秒等部分 select DATEPART(year,current_timestamp); select DATEPART( ...

  7. SQL-W3School-基础:SQL AND & OR 运算符

    ylbtech-SQL-W3School-基础:SQL AND & OR 运算符 1.返回顶部 1. AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤. AND 和 OR 运算符 ...

  8. Dart学习笔记-运算符-条件表达式-类型转换

    Dart学习笔记-运算符-条件表达式-类型转换 一.运算符 1.算术运算符 + (加)- (减)* (乘)/ (除)~/ (取整) %(取余) 2.关系运算符 == (等等) != (不等) > ...

  9. python学习第六天运算符总结大全

    python学习第六天运算符总结大全,玖乐网络(www.96net.com.cn)列出下面详细 1,算术运算符 + 加 - 减 *乘 / 除 % 求模 ** 乘方 // 取整除 - 返回商的整数部分 ...

随机推荐

  1. smarty获得当前url的方法分享

    http://{$smarty.server.SERVER_NAME}/{$smarty.server.REQUEST_URI} 注释: 复制代码代码如下: {$smarty.server.SERVE ...

  2. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群

    1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 10 64位) 3. 安装Git for windows(Windows 10 64位) 4. 安装V ...

  3. Java面试题(基础)

    一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所需要的软件环境,是提供给想运行jav ...

  4. bs4笔记

    1.网页输出乱码的解决办法 r= requests.get('https://www.baidu.com/') r.encoding = 'gbk2312'   #有可能 gbk.utf-8 soup ...

  5. kubernetes监控(12)

    一.Weave Scope 1. weave scope 容器地图 创建 Kubernetes 集群并部署容器化应用只是第一步.一旦集群运行起来,我们需要确保一起正常,所有必要组件就位并各司其职,有足 ...

  6. 查看oracle数据库的链接数和用户

    http://www.cnblogs.com/is1988/archive/2012/11/21/2780067.html 1.查询oracle的连接数select count(*) from v$s ...

  7. js 匿名函数 js-函数定义方法

    1.任何函数都是有返回值的,没有返回值的,在某些语言里称之为过程例如PL/SQL 2.js中的函数如果没有return 关键字指明给出的返回值,那么当调用完函数后,会返回“undefined" ...

  8. 使用mybatis的resultMap进行复杂查询

        记录下mybatis的集合查询中碰到的问题 https://jaychang.iteye.com/blog/2357143   MyBatis ofType和javaType区别 https: ...

  9. java内存回收需要了解的知识

    你是否有过这样的经历,跑得好好的Java进程,突然就瘫痪了?多数Java进程瘫痪的原因可以从java虚拟机层面找到原因. 1.什么情况下会执行gc 为了了解我们的系统为什么会不停fgc,我们需要先了解 ...

  10. Linux 中文man手册安装

    首先需要确认的是有没有安装中文支持,如果没有请安装:#yum groupinstall -y "Chinese Support" 现在下载安装包: wget http://manp ...