SQL Or運算符
在本教程中,您將學習如何使用SQL OR
運算符組合兩個布爾表達式。
1. SQL OR運算符簡介
SQL OR
是一個邏輯運算符,它組合兩個布爾表達式。 SQL OR
運算符計算結果返回true
或false
,具體取決於表達式的結果。
OR
運算符通常用於在SELECT,UPDATE或DELETE語句的WHERE子句中,以形成靈活的條件。
以下說明了SQL OR運算符的語法:
SELECT
column1,
column2,
...
FROM
table1
WHERE
expression1
OR expression2;
下表顯示了比較true
,false
和NULL
值時OR
運算符的結果。
TRUE
FALSE
NULL
TRUE
TRUE
TRUE
TRUE
FALSE
TRUE
FALSE
NULL
NULL
TRUE
NULL
NULL
請注意,如果任一表達式爲true
,則OR
運算符始終返回true
。
如果數據庫系統支持短路功能,則只要一個表達式爲真,OR
運算符就會停止評估條件的其餘部分。
注意,短路功能可以幫助數據庫系統通過在確定結果後立即中止處理邏輯表達式的剩餘部分來節省CPU計算。 有關短路功能的更多信息,請查看SQL AND運算符教程。
將OR
運算符與AND
運算符一起使用時,數據庫系統會在AND
運算符之後計算OR
運算符。 它叫作優先規則。 但是,可以使用括號更改評估順序。
2. SQL OR運算符示例
我們將使用示例數據庫中的employees
表來演示OR
運算符。
mysql> DESC employees;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| employee_id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(100) | NO | | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | int(11) | NO | MUL | NULL | |
| salary | decimal(8,2) | NO | | NULL | |
| manager_id | int(11) | YES | MUL | NULL | |
| department_id | int(11) | YES | MUL | NULL | |
+---------------+--------------+------+-----+---------+----------------+
10 rows in set
以下聲明查找了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;
執行上面示例代碼,得到以下結果 -
要查找1997
年或1998
年加入公司並在部門ID爲3
中工作的所有員工,可以使用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;
執行上面查詢語句,得到以下結果 -
如果不使用括號,查詢將檢索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;
執行上面查詢語句,得到以下結果 -
如果查詢使用許多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;
可以通過IN
運算符替換OR
運算符,如下所示:
SELECT
first_name,
last_name,
hire_date
FROM
employees
WHERE
YEAR (hire_date) IN (1990, 1999, 2000)
ORDER BY
hire_date;
執行上面示例代碼,得到以下結果 -
+------------+-----------+------------+
| first_name | last_name | hire_date |
+------------+-----------+------------+
| Alexander | Lee | 1990-01-03 |
| Diana | Chen | 1999-02-07 |
| Kimberely | Yang | 1999-05-24 |
| Karen | Zhang | 1999-08-10 |
| Min | Su | 1999-12-07 |
| Charles | Yang | 2000-01-04 |
+------------+-----------+------------+
6 rows in set
在本教程中,您已經學習瞭如何使用SQL OR
運算符組合兩個布爾表達式以形成靈活的條件。