SQL的BETWEEN运算符详解指南

导航至

本文由Pius Aboyi撰写。向下滚动查看作者简介。

SQL提供了许多运算符,您可以使用它们根据特定条件在查询中过滤数据。例如,当您需要获取某个范围内的数据值时,可以使用BETWEEN运算符。

BETWEEN运算符的一个实际应用场景是,当您需要获取年龄在五到十岁范围内的所有儿童记录时。在这种情况下,查询将检索所有年龄值从5到10的所有行。

在本篇文章中,您将通过逐步指南和示例学习如何使用BETWEEN运算符。

什么是SQL的BETWEEN运算符?

BETWEEN运算符选择位于特定范围内的行。由于它是包含的,因此它将包括具有等于范围起始和结束值的行的值。您可以使用BETWEEN运算符来过滤文本、数字和日期值。

BETWEEN运算符的语法如下

table BETWEEN minimum_value AND maximum_value

通常,BETWEEN运算符放在WHERE子句之后,类似于其他SQL逻辑运算符。

sql-between-operator

何时使用BETWEEN运算符

BETWEEN运算符可以轻松解决许多情况和问题。

  1. 获取时间范围内的数据:当您需要使用起始日期和结束日期选择数据时,BETWEEN运算符非常出色。例如,如果您需要在财务应用程序中检索2月1日至3月15日之间的所有交易。

  2. 获取数字范围内的数据:在此,当您需要获取具有特定字段值在范围内行的行时,可以使用BETWEEN运算符。例如,检索库存中可用数量在10到20范围内的项目。

  3. 在范围内搜索文本:您可以使用BETWEEN运算符使用包含两个字符串的范围获取行。例如,在一个包含学生及其成绩记录的表中,您可以选择所有成绩为A到C的学生的记录。

何时不使用BETWEEN运算符

当您希望结果中不包含范围的一端或两端时,不应使用BETWEEN运算符的好例子是。也就是说,您想获取A到C之间的行,但排除A和C。在这种情况下,结果将只包含带有B的行。如果您想排除范围的下限值,则从4到8获取行应返回只有5、6、7和8的行,而省略4,因为它是最小值。

如何使用SQL的BETWEEN运算符

在本节中,我们将指导您如何在MySQL和MS SQL Server中使用BETWEEN运算符。

步骤1:创建SQL表

为了跟随我们即将向您展示的示例,请先在您的数据库中创建一个新的表格。

运行以下查询以在MySQL或SQL Server中创建表格:MySQL

CREATE TABLE students_record(id int AUTO_INCREMENT PRIMARY KEY, full_name varchar(100) NOT NULL, grade varchar(20) NOT NULL, subject varchar(150) NOT NULL, date_of_birth date NOT NULL);

SQL Server

CREATE TABLE students_record(id int PRIMARY KEY IDENTITY(1,1), full_name varchar(100) NOT NULL, grade varchar(20) NOT NULL, subject varchar(150) NOT NULL, date_of_birth date NOT NULL);

上述查询将创建一个新的students_record表格。该表具有id、full_name、grade、subject和date_of_birth列。

接下来,用以下数据填充表格

id full_name grade subject date_of_birth
1 Simon Says A Chemistry 1994-02-13
2 John Doe C Chemistry 1998-11-05
3 Richard Rose B Agric 2000-01-09
4 Mary West A Math 2003-08-22
5 Pedro Joseph D History 1995-10-10
6 Phil Jack E Biology 1996-12-05
7 Phoden Mike A Physics 2001-03-24

第二步:选择特定成绩范围内的学生

在此步骤中,我们将向您展示如何编写查询以选择所有成绩为B到D的学生。

为此,运行以下SQL查询

SELECT * FROM students_record WHERE grade BETWEEN 'B' AND 'D';

以下表格显示了查询的结果

id full_name grade subject date_of_birth
2 John Doe C Chemistry 1998-11-05
3 Richard Rose B Agric 2000-01-09
5 Pedro Joseph D History 1995-10-10

当BETWEEN运算符使用文本值作为范围时,搜索将按照字典顺序进行。为了更好地理解这一点,请运行以下查询

SELECT * FROM students_record WHERE full_name BETWEEN 'Mary West' AND 'Phil Jack';

以下表格显示了查询的结果

id full_name grade subject date_of_birth
1 Simon Says A Chemistry 1994-02-13
2 John Doe C Chemistry 1998-11-05
3 Richard Rose B Agric 2000-01-09
4 Mary West A Math 2003-08-22
5 Pedro Joseph D History 1995-10-10
6 Phil Jack E Biology 1996-12-05
7 Phoden Mike A Physics 2001-03-24

查询的结果返回从“Mary West”到“Phil Jack”的姓名。这是因为只有full_name列中第一个字符的顺序大于M(包括M)的值被选中,一直到“Phil”。注意查询停在“Phoden”上,因为第三个字符“o”的顺序大于“Phil”中的“i”。

第三步:选择出生在特定日期范围内的学生

要选择两个日期范围内的行,请运行以下SQL查询

SELECT * FROM students_record WHERE date_of_birth BETWEEN '1994-01-01' AND '1999-12-31';

以下表格显示了查询的结果

id full_name grade subject date_of_birth
1 Simon Says A Chemistry 1994-02-13
2 John Doe C Chemistry 1998-11-05
5 Pedro Joseph D History 1995-10-10
6 Phil Jack E Biology 1996-12-05

您必须将开始和结束日期作为字符串提供,用引号括起来。

第四步:选择范围之外的数据

使用NOT运算符,您可以选择只有BETWEEN语句中范围之外的数据。您可以使用NOT BETWEEN运算符来完成此操作。

运行以下查询以检索所有出生在1994年1月1日至1999年12月31日之间的学生的记录

SELECT * FROM students_record WHERE date_of_birth NOT BETWEEN '1994-01-01' AND '1999-12-31';

以下表格显示了查询的结果

id full_name grade subject date_of_birth
4 Mary West A Math 2003-08-22
5 Pedro Joseph D History 1995-10-10
6 Phil Jack E Biology 1996-12-05

第五步:使用BETWEEN与IN运算符结合使用

IN运算符接受由逗号分隔的值列表。然后它评估每一行以确定是否包含任何值。与检查范围的BETWEEN运算符不同,IN运算符要求您指定您希望过滤的所有值。

在此示例中,我们将结合使用IN和BETWEEN运算符以新的方式在students_record表上过滤数据。

sql-in-operator

要开始,请运行以下查询

SELECT * FROM students_record WHERE grade BETWEEN 'A' AND 'C' AND date_of_birth IN('1998-11-05', '1994-02-13');

以下表格显示了查询的结果

id full_name grade subject date_of_birth
4 Mary West A Math 2003-08-22
5 Pedro Joseph D History 1995-10-10
6 Phil Jack E Biology 1996-12-05

现在让我们来看看查询真正做了什么。

WHERE子句的第一部分检查成绩在A和C之间的学生。然后IN运算符进一步过滤结果,只包括满足第一个条件且出生在1998年11月5日或1994年2月13日的学生。

什么是时间序列数据库?

时间序列数据库是存储以时间为关键因素的特定数据库组。它们通常以键和值的形式存储数据,其中时间是键,值可以是消息。

在本文的早期部分,您看到了如何使用BETWEEN运算符通过日期范围过滤数据。由于时间序列数据库优先考虑每个值的时期(时间),因此很容易通过两个或更多时间范围来过滤数据。

结论

在本篇文章中,我们介绍了SQL BETWEEN运算符。这是一个SQL运算符,可以轻松通过范围过滤数据。

此外,我们通过几个使用SQL BETWEEN运算符从表中检索数据的实际示例向您介绍了它的用法。这些示例包括使用文本和日期作为范围。

您也看到了如何使用BETWEEN运算符与IN运算符结合使用,为SQL选择查询添加两层过滤。它们比像><AND=这样的逻辑运算符链更容易使用,也更易于阅读。

关于作者

本文由Pius Aboyi撰写。 Pius是一位拥有超过4年Android平台开发经验的移动和Web开发者。他使用Java、Kotlin和PHP编写代码。他热爱写关于技术的文章,并为开发者创建教程。