SQLにおける論理演算子の基本
条件判断をするときに、条件が1つしかないということは滅多にありません。膨大なデータの中から有用なデータを探すためには、たくさんの条件から判断した検索結果が必要になることが多いでしょう。条件式を比較演算子で記述するには、前のセクションで解説しました。しかし、複数の条件を並べることは比較演算子だけではできません。このようなときに使うのが論理演算子です。
【SQLの基礎知識⑤】 SQLにおける比較演算子の基本
この章では、SQLの問合せにおける条件式の記述方法を習得できます。解説文だけでなく、具体的・実践的なSQL文と実行結果を確認することで、理解を深めることができます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
論理演算子 | 内容 |
---|---|
AND | 2つの条件式の結果が両方真になるときに真を返す |
OR | 2つの条件式の結果の片方が真になれば真を返す |
NOT | 後に続く条件式の結果が真なら偽を、偽なら真を返す |
AND演算子
AND演算子は、2つの条件式の両方が真になったときに、真を返す演算子です。そのため左辺と右辺に並んでいるどちらかの条件式が偽になると偽を返します。
実際にAND演算子を使ってみましょう。「在庫リスト」表から単価が10000以上、カテゴリが実用商品のものを検索するときには、次のように入力します。
SQL文 SELECT * FROM 在庫リスト
WHERE 単価 > 10000 AND カテゴリ = '実用商品'; 実行結果
表:在庫リスト 商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
---|---|---|---|---|
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
---|---|---|---|---|
1 | 時の卵 | 空想商品 | 12345 | 2 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
3 | 地面に沈む羽 | 空想商品 | 1200 | 4 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
単価が10000以上で、実用商品の両方の条件を満たす行だけが結果として返されます。この例では「見えない眼鏡」が単価10000以上で、なおかつ実用商品なので、検索結果として出力されています。
OR演算子
OR演算子は、2つの条件式のどちらかが真になったときに、真を返す演算子です。左辺と右辺のどちらかが真なら真を返し、両方が真の場合も真を返します。偽を返すのはどちらも偽の場合だけになります。 OR演算子の使用例としては、「在庫リスト」表で、カテゴリが空想商品もしくは危険商品の商品を検索してみます。SQL文 SELECT * FROM 在庫リスト
WHERE カテゴリ = '空想商品' OR カテゴリ = '危険商品';実行結果
表:在庫リスト 商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
1 | 時の卵 | 空想商品 | 12345 | 2 |
3 | 地面に沈む羽 | 空想商品 | 1200 | 4 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
---|---|---|---|---|
1 | 時の卵 | 空想商品 | 12345 | 2 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
3 | 地面に沈む羽 | 空想商品 | 1200 | 4 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
NOT演算子
NOT演算子は、条件式を否定する演算子です。これは、条件式が真になった場合に偽を返し、条件式が偽になったときに真を返します。要するに条件式の結果を反転させる働きを持っています。 実際に、NOT演算子を使ってみましょう。次の例では、NOT演算子を付けて、=演算子でカテゴリが空想商品を検索しています。SQL文 SELECT * FROM 在庫リスト WHERE NOT カテゴリ = '空想商品';実行結果
商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
「カテゴリ = '空想商品'」で、カテゴリが空想商品の商品を選択していますが、NOT演算子を使ったことで、結果が反転し、カテゴリが空想商品以外のものが結果として返されています。
なお、NOT演算子を使って記述できる条件式の一部は、比較演算子の<>演算子を使っても同じ結果を得ることができます。
SQL文 SELECT * FROM 在庫リスト WHERE カテゴリ <> '空想商品';
実行結果
商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
論理演算子の優先順位
論理演算子を使えば、問合せを行うときに複数の条件式を組合せて検索を行えます。この論理演算子でも、算術演算子と同じように、「( )」を使うことで処理の優先順位を指定することができます。 通常論理演算を評価する順序は、先に記述してあるものから順番に行われます。<条件式1> AND <条件式2> OR <条件式3>
このような論理演算があると、まず条件式1と条件式2のAND演算を行い、その演算結果と条件式3のOR演算を行います。実際のサンプルとして次のSQL文を実行してみます。
SQL文 SELECT * FROM 在庫リスト WHERE 単価=1000 AND カテゴリ='空想商品' OR カテゴリ='実用商品'; 実行結果
表:在庫リスト 商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
1 | 時の卵 | 空想商品 | 12345 | 2 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
3 | 地面に沈む羽 | 空想商品 | 1200 | 4 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
---|---|---|---|---|
1 | 時の卵 | 空想商品 | 12345 | 2 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
3 | 地面に沈む羽 | 空想商品 | 1200 | 4 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
このSQL文では、まず条件式「単価>1000」と条件式「カテゴリ='空想商品'」を評価してから、条件式「カテゴリ='実用商品'」を評価します。そのため、「単価が1000以上のものでカテゴリが空想商品のもの、またはカテゴリが実用商品」という順番になります。
この条件式の順番を変えるには、「( )」を使います。「( )」を使って複数の論理演算を記述すると括弧が優先して評価されます。
<条件式1> AND (<条件式2> OR <条件式3>)
このように入力している場合には、まず条件式2と条件式3の評価を先に行い、その演算結果を条件式1のAND演算を行います。実際のサンプルでは次のようになります。
SQL文 SELECT 商品番号,商品名,カテゴリ,単価 FROM 在庫リスト
WHERE 単価 > 1000 AND (カテゴリ='空想商品' OR カテゴリ='実用商品'); 実行結果
表:在庫リスト 商品番号 | 商品名 | カテゴリ | 単価 |
1 | 時の卵 | 空想商品 | 12345 |
3 | 地面に沈む羽 | 空想商品 | 1200 |
4 | 見えない眼鏡 | 実用商品 | 20000 |
商品番号 | 商品名 | カテゴリ | 単価 | 在庫 |
---|---|---|---|---|
1 | 時の卵 | 空想商品 | 12345 | 2 |
2 | 解けない氷 | 実用商品 | 500 | 32 |
3 | 地面に沈む羽 | 空想商品 | 1200 | 4 |
4 | 見えない眼鏡 | 実用商品 | 20000 | 12 |
5 | 柄のない包丁 | 危険商品 | 3200 | 3 |
演算子の優先順位
ここまでいくつかのセクションで演算子を紹介してきました。しかし、SQLで扱える演算子はこれだけではなく、各演算子のリファレンスで紹介するように、他にも多くのものがあります。
SQLリファレンス > 演算子
演算子によって列に対する様々な演算が行えます。このページは、使用できる演算子の一覧表です。いちれべ.comは、オラクル、MS-SQL Server、MS-Access で使用可能か一目でわかるのが特徴のSEサポートサイトです。
主な演算子の優先順位
優先順位を変更したい場合には、それぞれの演算子の優先順位でも解説した「( )」を使って、優先順位の変更を行います。演算子 | 優先順 |
---|---|
* / % | 高 |
+ - | ↑ |
= > >= < <= <> != | | |
& | | | |
NOT | | |
AND | ↓ |
BETWEEN IN LIKE OR SONE | 低 |
関連リンク
次の章に進む

【SQLの基礎知識⑦】 SQLにおけるNULLの扱い
NULLとは、値が存在していないことを言います。この章では、最低限知っておくべきSQLにおけるNULLの扱い方を習得できます。いちれべ.comは、オラクル、MS-SQL、MS-Access で使用可能か一目でわかるサイトです。
目次

【SQLの基礎知識】基本ルールや基礎の基礎をマスターしよう
こちらの記事を読み進めることで、SQLの基礎が充分に身に付きます。これからSQLを身に着けたい初心者・入門者の方に最適です。データベース製品ごとに表現方法が異なることがありますので、ある程度SQLのスキルがある方も利用できるサイトです。