SQL OR

摘要:在本教學中,您將學習如何使用 SQL OR 運算子來組合兩個布林運算式。

SQL OR 運算子簡介

SQL OR 是一個邏輯運算子,它組合兩個布林運算式。SQL OR 運算子會根據運算式的結果傳回 true 或 false。

OR 運算子通常用在 WHERE 子句中,用於 SELECTUPDATEDELETE 陳述式,以形成一個彈性的條件。

以下說明 SQL OR 運算子的語法

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

下表顯示當我們比較 true、false 和 NULL 值時,OR 運算子的結果。

TRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL

請注意,如果其中一個運算式為 true,OR 運算子總是會傳回 true。

如果資料庫系統支援短路功能,一旦有一個運算式為 true,OR 運算子就會停止評估條件的其餘部分。

請注意,短路功能藉由在可以確定結果時立即中止處理邏輯運算式的其餘部分,來幫助資料庫系統節省 CPU 計算。有關短路功能的更多資訊,請查看SQL AND 運算子教學

當您將 OR 運算子與 AND 運算子一起使用時,資料庫系統會在 AND 運算子之後評估 OR 運算子。這被稱為優先順序規則。但是,您可以使用括號來更改評估順序。

SQL OR 運算子範例

我們將使用來自範例資料庫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)

試試看

您可以將 OR 運算子替換為 IN 運算子,如下所示

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 運算子來組合兩個布林運算式,以形成一個彈性的條件。

這個教學對您有幫助嗎?