概要: このチュートリアルでは、2つのブール式を組み合わせるSQL OR演算子の使用方法を学習します。
SQL OR演算子の紹介
SQL ORは、論理演算子であり、2つのブール式を組み合わせます。SQL OR演算子は、式の結果に応じてtrueまたはfalseを返します。
OR演算子は通常、柔軟な条件を形成するために、WHERE句のSELECT、UPDATE、またはDELETE文で使用されます。
以下は、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 |
OR演算子は、いずれかの式がtrueの場合常にtrueを返します。
データベースシステムがショートサーキット機能をサポートしている場合、OR演算子は、いずれかの式がtrueになり次第、条件の残りの部分の評価を停止します。
ショートサーキット機能は、結果を決定できるようになり次第、論理式の残りの部分の処理を中止することで、データベースシステムのCPU計算を節約するのに役立ちます。ショートサーキット機能の詳細については、SQL AND演算子のチュートリアルをご覧ください。
OR演算子をAND演算子と共に使用する場合、データベースシステムはAND演算子の後にOR演算子を評価します。これは優先順位の規則として知られています。ただし、括弧を使用して評価順序を変更できます。
SQL OR演算子の例
OR演算子のデモには、サンプルデータベースの employeesテーブルを使用します。

次のステートメントは、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年または1997年に入社し、部署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;Code language: SQL (Structured Query Language) (sql)
多くの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)
このチュートリアルでは、2つのブール式を組み合わせて柔軟な条件を形成するSQL OR演算子の使用方法を学習しました。