概要: このチュートリアルでは、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
演算子の使用方法を学習しました。