mysql中between的用法
between的介绍
日常sql查询过程中经常要筛选某个属性或某个表达式结果的某个范围内的数据,这个时候我们经常通过 > 或者 < 来进行筛选,有的时候再项目中由于 > 和 < 经常会和起始标志符冲突,所以需要进行转义,这个过程很容易出现一些问题,其实在sql的关键字中,有一个非常实用的关键字可以进行范围查询,这个关键字就是between,接下来我们就来深入的了解一下between的用法。
between的语法
between关键字是一个逻辑操作符用来筛选指定属性或表达式某一范围内或范围外的数据。between关键字常用在where关键字后与select或update或delete共同使用。between的使用语法如下:
expr [NOT] BETWEEN begin_expr AND end_expr;1
在整个表达式中,expr表示的是一个单一的属性或者是一个计算的表达式,整个表达式中的三个参数 expr、begin_expr、end_expr 必须是同一种数据类型。
between筛选的是 expr >= begin_expr并且 expr <= end_expr 的数据,如果不存在则返回的是0;
not between筛选的是 expr < begin_expr或者 expr > end_expr 的数据,如果不存在则返回的是0;
如果 expr 返回的是 NULL,则between 也返回的是null (暂未验证)
between的用法
假如我们有一张数据库表如下所示
CREATE TABLE `t_income` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '唯一自增id', `income_date` varchar(255) NOT NULL COMMENT '收入年月', `amount` float NOT NULL COMMENT '收入金额', `target_amount` float NOT NULL DEFAULT '0' COMMENT '目标收入', `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;12345678
查询表中amount>=10并且amount<=50的数据
select * from t_income where amount between 10 and 50;12
查询表中amount 和 target_amount 总和 >=100并且<=500的数据
select * from t_income where (amount + target_amount) between 100 and 500;12
查询表中create_time 在 2019-01-01 到 2019-09-01 这个日期范围内的数据
select * from t_income where create_time between cast('2019-01-01' as DATE) and cast('2019-09-01' as DATE);12
查询表中amount < 10 或者 amount > 50 的数据
select * from t_income where amount not between 10 and 50;12
between的总结
通过上面的讲解,我们现在应该已经基本的学会了between的用法,但是如果在开发中,我们要查询某个属性大于某一个值 并且小于某个值的话,我们就只能用 > and < 啦