SQL 或

摘要:在本教程中,您将学习如何使用 SQL 或运算符合并两个布尔表达式。

SQL 或运算符简介

SQL 或是一个 逻辑运算符,它合并两个布尔表达式。SQL 或运算符根据表达式的结果返回真或假。

或运算符通常用于 WHERE SELECTUPDATEDELETE 语句的子句中,以形成灵活的条件。

以下说明了 SQL 或运算符的语法

SELECT
	column1,
	column2,
        ...
FROM
	table1
WHERE
	expression1
OR expression2;

下表显示了当我们比较真、假和 NULL 值时,OR 运算符的结果。

NULL
NULL
NULLNULLNULL

注意,如果任一表达式为真,则 OR 运算符始终返回真。

如果数据库系统支持短路功能,则一旦一个表达式为真,OR 运算符就会停止计算条件的剩余部分。

请注意,短路功能有助于数据库系统在它能确定结果后立即中止计算逻辑表达式的剩余部分,从而节省 CPU 计算。有关短路功能的更多信息,请查看 SQL AND 运算符教程

当您将 OR 运算符与 AND 运算符一起使用时,数据库系统将在 AND 运算符后计算 OR 运算符。这称为优先规则。但是,您可以使用括号来更改计算顺序。

SQL 或运算符示例

我们将在 样本数据库 中使用 employees 表来演示 OR 运算符。

employees_table

以下语句查找 1997 年或 1998 年加入公司的所有员工。

SELECT
	first_name,
	last_name,
	hire_date
FROM
	employees
WHERE
	YEAR (hire_date) = 1997 OR YEAR (hire_date) = 1998
ORDER BY
	first_name,
	last_name;

尝试

SQL OR operator example

要查找 1997 年或 1997 年加入公司并在部门 ID 3 中工作的员工,请同时使用 ANDOR 运算符,如下所示

SELECT
	first_name,
	last_name,
	hire_date,
	department_id
FROM
	employees
WHERE
	department_id = 3
AND (
	YEAR (hire_date) = 1997
	OR YEAR (hire_date) = 1998
)
ORDER BY
	first_name,
	last_name;

尝试

如果您不使用括号,则查询将检索出 1997 年加入公司并在部门 ID 3 中工作的员工,或 1998 年加入公司但没有指定部门的员工。

这是因为数据库系统将在 AND 运算符后计算 OR 运算符。

SELECT
	first_name,
	last_name,
	hire_date,
	department_id
FROM
	employees
WHERE
	department_id = 3
AND YEAR (hire_date) = 1997
OR YEAR (hire_date) = 1998
ORDER BY
	first_name,
	last_name;Code language: SQL (Structured Query Language) (sql)

尝试

SQL OR and AND operator example

如果一个查询使用了许多 OR 运算符,则它将变得难以阅读。为了使查询更具可读性,您可以使用 IN 运算符。

例如,以下查询查找出在 1990 年、1999 年或 2000 年加入该公司的所有员工。

SELECT
	first_name,
	last_name,
	hire_date
FROM
	employees
WHERE
	YEAR (hire_date) = 2000
OR YEAR (hire_date) = 1999
OR YEAR (hire_date) = 1990;Code language: SQL (Structured Query Language) (sql)

尝试

您可以使用以下方式用 IN 运算符替换 OR 运算符

SELECT
	first_name,
	last_name,
	hire_date
FROM
	employees
WHERE
	YEAR (hire_date) IN (1990, 1999, 2000)
ORDER BY
	hire_date;Code language: SQL (Structured Query Language) (sql)

尝试

SQL OR and IN operator example

在本教程中,您已学习如何使用 SQL OR 运算符合并两个布尔表达式以形成一个灵活的条件。

本教程有帮助吗?