SQL Between用法详解:MySQL日期范围查询与Not Between实例教程

SQL的BETWEEN运算符与WHERE子句一起使用,用于选择指定范围内的数据。这些值可以是数字、文本和日期。SQL BETWEEN运算符与SQL IN运算符类似,但它是按顺序使用的。BETWEEN范围定义的值是包含性的,即范围内提到的值包括开始值和结束值。下面我们将详细讨论BETWEEN运算符。如前所述,BETWEEN运算符可以与数字、文本和日期一起使用。我们将在下面详细讨论这三种情况。

SQL BETWEEN 语法

SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 值1 AND 值2;

使用上述语法,我们可以将值定义为BETWEEN运算符的一部分。此外,无论使用数值、文本值还是日期值,上述语法都保持不变。

SQL BETWEEN 操作符用于数字值

通过一些数值示例,我们将更详细地理解上述语法。让我们以以下学生表为例。

学号 学生姓名 学生性别 学生年龄 学生成绩 入学日期
1 George M 14 85 2018-01-01
2 Monica F 12 88 2018-01-31
3 Jessica F 13 84 2018-01-15
4 Tom M 11 78 2017-12-15

我正在使用MySQL数据库,以下是创建学生表并插入示例记录的脚本:

CREATE TABLE `Student` (
  `rollno` int(11) unsigned NOT NULL,
  `studentname` varchar(20) DEFAULT NULL,
  `studentgender` varchar(5) DEFAULT NULL,
  `studentage` int(3) DEFAULT NULL,
  `studentpercent` int(3) DEFAULT NULL,
  `admissiondate` date DEFAULT NULL,
  PRIMARY KEY (`rollno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `Student` (`rollno`, `studentname`, `studentgender`, `studentage`, `studentpercent`, `admissiondate`)
VALUES
	(1, 'George', 'M', 14, 85, '2018-01-01'),
	(2, 'Monica', 'F', 12, 88, '2018-01-31'),
	(3, 'Jessica', 'F', 13, 84, '2018-01-15'),
	(4, 'Tom', 'M', 11, 78, '2017-12-15');

场景:查询年龄在11到13岁之间的学生的百分比。

SELECT StudentPercent FROM Student WHERE StudentAge BETWEEN 11 AND 13;

输出结果:

学生成绩
88
84
78
SQL Between Clause example

数字值的SQL NOT BETWEEN操作符

SQL NOT BETWEEN运算符用于获取结果集中不在BETWEEN运算符指定范围内的值。场景:查询年龄不在11到13岁之间的学生的百分比。

SELECT StudentPercent FROM Student WHERE StudentAge NOT BETWEEN 11 AND 13;

结果:

学生成绩
85
sql not between example

SQL BETWEEN 运算符用于文本值

场景:查询学号(RollNo)、学生姓名(StudentName)和学生年龄(StudentAge),其中学生姓名在George和Jessica之间。

SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName BETWEEN 'George' AND 'Jessica';

输出结果:

学号 学生姓名 学生年龄
1 George 14
3 Jessica 13

SQL NOT BETWEEN 运算符用于文本值

场景:查询学号(RollNo)、学生姓名(StudentName)和学生年龄(StudentAge),其中学生姓名不在George和Jessica之间。

SELECT RollNo, StudentName, StudentAge FROM Student WHERE StudentName NOT BETWEEN 'George' AND 'Jessica';

输出:

学号 学生姓名 学生年龄
2 Monica 12
4 Tom 11

SQL BETWEEN 运算符用于日期值

场景:查询入学日期在2018年1月1日至2018年1月31日之间的学生年龄。

SELECT StudentAge FROM Student WHERE admissiondate BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';

输出结果:

学生年龄
14
12
13
SQL Between Date Example

SQL NOT BETWEEN 运算符用于日期值

场景:查询不在2018年1月1日至2018年1月31日期间入学的学生的年龄。

SELECT StudentAge FROM Student WHERE admissiondate NOT BETWEEN str_to_date('2018-01-01', '%Y-%m-%d') AND '2018-01-31';

输出结果:

学生年龄
11

多个BETWEEN操作符

我们也可以使用多个BETWEEN运算符。其语法如下:

SELECT 列名 FROM 表名 WHERE 
列名 BETWEEN 值1 AND 值2 
AND 
列名 BETWEEN 值3 AND 值4 
... 
AND 
列名 BETWEEN 值N AND 值M;

使用上述语法,我们可以组合多个BETWEEN运算符。场景:查询年龄在10到13岁之间,且成绩在80至85之间的学生姓名。

SELECT StudentName FROM Student WHERE 
StudentAge BETWEEN 10 AND 13 
AND
StudentPercent BETWEEN 80 AND 85;
SQL Multiple Between Operators
bannerAds