SQL OR

概要: このチュートリアルでは、2つのブール式を組み合わせるSQL OR演算子の使用方法を学習します。

SQL OR演算子の紹介

SQL ORは、論理演算子であり、2つのブール式を組み合わせます。SQL OR演算子は、式の結果に応じてtrueまたはfalseを返します。

OR演算子は通常、柔軟な条件を形成するために、WHERE句のSELECTUPDATE、またはDELETE文で使用されます。

以下は、SQL OR演算子の構文を示しています。

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

次の表は、true、false、およびNULL値を比較した場合のOR演算子の結果を示しています。

TRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL

OR演算子は、いずれかの式がtrueの場合常にtrueを返します。

データベースシステムがショートサーキット機能をサポートしている場合、OR演算子は、いずれかの式がtrueになり次第、条件の残りの部分の評価を停止します。

ショートサーキット機能は、結果を決定できるようになり次第、論理式の残りの部分の処理を中止することで、データベースシステムのCPU計算を節約するのに役立ちます。ショートサーキット機能の詳細については、SQL AND演算子のチュートリアルをご覧ください。

OR演算子をAND演算子と共に使用する場合、データベースシステムはAND演算子の後にOR演算子を評価します。これは優先順位の規則として知られています。ただし、括弧を使用して評価順序を変更できます。

SQL OR演算子の例

OR演算子のデモには、サンプルデータベースの employeesテーブルを使用します。

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で働いているすべての従業員を見つけるには、次のように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)

試してみる

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

このチュートリアルでは、2つのブール式を組み合わせて柔軟な条件を形成するSQL OR演算子の使用方法を学習しました。

このチュートリアルは役に立ちましたか?