跳至主要内容

如何使用 SQL 的 BETWEEN 运算符

SQL 的 BETWEEN 运算符可在特定区间内过滤数值,助力高效数据分析。探索其多种应用与全部潜能。
· 10分钟 阅读

使用 AI 探索

SQL 的 BETWEEN 运算符用于在特定范围内过滤数值。它可与 SELECT 语句搭配使用,以简化并提升查询的可读性。

如果您刚接触 SQL,建议先学习 SQL 入门与 SQL 基础课程,开启您的 SQL 学习之旅,成长为一名出色的分析师。

简明解答:什么是 SQL BETWEEN 运算符?

BETWEEN 运算符用于筛选并返回数据集中落在某一范围内的行。在 SELECT 语句中使用时,BETWEEN 运算符会包含给定的起始值与结束值。这个强大的运算符适用于多种 SQL 数据类型,包括日期、数值和字符串数据。

在下面的示例中,查询将从 employees 表中选出工资介于 50,000 到 60,000 之间的所有员工记录。请注意,BETWEEN 是包含性的,因此 50,000 和 60,000 都会出现在结果中。

-- Select all columns from the Employees table
SELECT * 
FROM employees
-- Filter the results to include only employees with salaries between 50,000 and 60,000
WHERE salary BETWEEN 50000 AND 60000;

SQL BETWEEN 运算符的语法

在 SELECT 语句中,BETWEEN 运算符的语法十分简洁,用于过滤数值。它位于 WHERE 子句中,以指定数据范围的下限和上限。

-- Select the specified columns from the table
SELECT column_name(s)
FROM table_name
-- Filter the results to include only those where column_name values fall between (inclusive)
WHERE column_name BETWEEN value1 AND value2;

如果您需要查阅常用运算符(包括 BETWEEN)的语法,DataCamp 的 SQL 基础速查表也非常实用。

使用 SQL BETWEEN 的要点

使用 BETWEEN 运算符时,请注意它应位于 SELECT 语句的 WHERE 子句中。这样的放置方式可确保 BETWEEN 运算符对 WHERE 子句指定的列进行过滤。

-- Select all columns from the Employees table
SELECT * 
FROM employees
-- Filter the results to include only employees with employeee_id between 10 and 18
WHERE employee_id BETWEEN 10 AND 18;

在范围过滤场景中,BETWEEN 通常更受青睐,因为它能以简洁的方式完成数据过滤。当需要过滤多个条件时,其语法也更简单,查询更易读。 

若不使用 BETWEEN,我们可以通过其他运算符实现类似效果。但请注意,这些运算符同样位于 WHERE 子句中,会使查询更冗长、可读性更差。

-- Select the first name, last name, and salary columns from the Employees table
SELECT first_name, last_name, salary
FROM employees
-- Filter the results to include only those employees whose salary is greater than or equal to 50,000
-- and less than or equal to 60,000
WHERE salary >= 50000 AND salary <= 60000;

使用 BETWEEN 后,查询更直观、易于理解。

-- Select the first name, last name, and salary columns from the Employees table
SELECT first_name, last_name, salary
FROM employees
-- Filter the results to include only those employees whose salary is between 50,000 and 60,000 (inclusive)
WHERE salary BETWEEN 50000 AND 60000;

请务必记住,BETWEEN 指定的数值会包含在结果中。SQL 查询会返回这些数值作为数据范围的上下界所对应的记录。

SQL BETWEEN 的常见用法

BETWEEN 运算符在数据过滤中有多种用法,包括过滤数值或日期区间。我们来看几个示例。

使用 BETWEEN 过滤数值区间

BETWEEN 常用于过滤数值数据。在此场景下,您可以筛选出落在某一范围内的数据。下面的示例会过滤 employees 表,返回工资在 62,000 到 70,000 之间的行。

-- Select all columns from employees table
SELECT *
FROM employees
-- Filter the results to include only those employees whose salary is between 62,000 and 70,000 (inclusive)
WHERE salary BETWEEN 62000 AND 70000;

使用 BETWEEN 过滤日期区间

BETWEEN 也可用于筛选特定日期范围内的记录。这在分析包含日期和时间的数据时尤其有用。 

假设 employees 表中有一列名为 hire_date,我们可以使用 BETWEEN 来过滤日期,找出在特定时段入职的员工记录。

-- Select all columns from employees table
SELECT *
FROM employees
-- Filter records where hire date is between January 1, 2022, and December 31, 2022 (inclusive)
WHERE hire_date BETWEEN '2022-01-01' AND '2022-12-31';

将 BETWEEN 与其他运算符结合

您也可以将 BETWEEN 与其他运算符结合,以实现更复杂的过滤场景。当您需要更精细的过滤时,这种方式尤为重要。下面的示例在 WHEN 子句中使用了等号(=)运算符,仅筛选销售部的行,随后再用 BETWEEN 进一步过滤工资在 50,000 到 60,000 之间的记录。

-- Select all columns from employees table
SELECT *
FROM employees
-- Filter records where department is 'Sales' and salary is between 50,000 and 60,000 (inclusive)
WHERE department = 'Sales' AND salary BETWEEN 50000 AND 60000;

建议您浏览 DataCamp 的 SQL 课程合集,找到最适合您的课程。

SQL Between 命令的局限性

最后,我们来看看一些局限性与替代方案。 

SQL 中 BETWEEN 运算符的局限

SQL BETWEEN 运算符的潜在局限包括:

  • 包含性边界可能引发混淆:由于 BETWEEN 会包含指定的上下界值,若使用不当,可能造成困惑或产生与预期不符的结果。
  • 大型数据集下的性能问题:在未合理利用索引的情况下使用 BETWEEN,可能导致性能问题,尤其是在处理大型数据集时。

SQL 中 BETWEEN 运算符的替代方案

由于 BETWEEN 会包含上下界值,如需实现排除上下界的“开区间”过滤,可以使用小于(<)与大于(>)运算符。这将确保这些边界值不被包含在结果中。

-- Select the first name, last name, and salary columns from the Employees table
SELECT first_name, last_name, salary
FROM employees
-- Filter the results to include only those employees whose salary is greater than 50,000
-- and less than 60,000 (exclusive)
WHERE salary > 50000 AND salary < 60000;

总结

SQL 中的 BETWEEN 运算符适用于在给定范围内过滤数值。理解并掌握在数据过滤与处理时使用 BETWEEN 的重要性,对数据分析师至关重要。建议您在不同数据类型与数据集上多加练习 BETWEEN 的使用,以提升 SQL 技能。

持续学习将帮助您在职场中脱颖而出。建议学习进阶的 SQL 报表课程,并考虑系统性的 SQL 助理数据分析师职业路径。最后,DataCamp 还提供 SQL 助理认证,帮助您展示在使用 SQL 进行数据分析方面的专业成就。

Allan Ouko

作者

Allan Ouko

数据科学技术写作者,具备数据分析、商业智能和数据科学的一线实践经验。我撰写以行业为导向的实用内容,涵盖 SQL、Python、Power BI、Databricks 和数据工程,并以真实的分析工作为基础。我的写作兼顾技术深度与业务影响,帮助专业人士将数据转化为自信的决策。

常见问题

SQL 的 BETWEEN 运算符是做什么的?

SQL 的 BETWEEN 运算符用于在一个取值范围内过滤数据。

如何使用 SQL 的 BETWEEN 运算符?

SQL 的 BETWEEN 运算符需在 WHERE 子句中使用,用于过滤指定列的数据。

BETWEEN 运算符可用于哪些 SQL 数据类型?

该 BETWEEN 运算符可用于多种数据类型,包括日期、数值与字符串类型。

BETWEEN 可以和其他运算符一起使用吗?

您可以在 WHERE 子句中在 BETWEEN 之前加入其他运算符,以实现更高级的过滤。

若要排除部分记录,应使用哪些替代方案?

当您不想在使用 SQL BETWEEN 时包含上下界值,应该使用 > 与 < 运算符来实现排除边界的过滤。

主题