菜鸟笔记
提升您的技术认知

sql between包括两端吗-ag真人游戏

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 productswhere 价格 between 30 and 60;

结果:

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

not between 实例

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

实例

select * from productswhere 价格 not between 30 and 60;或select * from productswhere not 价格 between 30 and 60;

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

结果:

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

带有 in 的 between 操作符实例

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

实例

select * from productswhere (价格 between 10 and 60)and 名称 not in ('大米','香蕉');

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

结果:

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

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

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

实例

select * from productswhere 名称 between '面包' and '香蕉'

结果:

你注意到了吗?

为什么会出现苹果呢?

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

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

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

带有文本值的 not between 操作符实例

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

实例

select * from productswhere 名称 not between '面包' and '香蕉'

结果

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

日期边界问题

示例表orders

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

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

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

实例

select * from orderswhere 订单日期 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日(含)的所有数据了。

网站地图