zoukankan      html  css  js  c++  java
  • SQL学习——BETWEEN运算符

    原文链接

    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之间的所有产品:

    实例

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

    结果:

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

    NOT BETWEEN 实例

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

    实例

    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之间但名称不是大米和香蕉的所有产品:

    实例

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

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

    结果:

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

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

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

    实例

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

    结果:

    你注意到了吗?

    为什么会出现苹果呢?

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

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

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

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

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

    实例

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

    结果:

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

    日期边界问题

    示例表Orders

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

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

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

    实例

    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日(含)的所有数据了。

  • 相关阅读:
    算法竞赛入门经典习题2-3 韩信点兵
    ios入门之c语言篇——基本函数——5——素数判断
    ios入门之c语言篇——基本函数——4——数值交换函数
    144. Binary Tree Preorder Traversal
    143. Reorder List
    142. Linked List Cycle II
    139. Word Break
    138. Copy List with Random Pointer
    137. Single Number II
    135. Candy
  • 原文地址:https://www.cnblogs.com/-wenli/p/11566924.html
Copyright © 2011-2022 走看看