論理演算子の使い方

論理演算子は論理積( and )、論理和( or )、排他的論理和( xor )などを使って A 且つ B や A または B などより複数の条件式を組み合わせた条件式を作ることができます。 MySQL で利用可能な論理演算子は次の通りです。

演算子使用例意味
ANDa AND ba と b が共にTRUEの時にTRUE
&&a && ba と b が共にTRUEの時にTRUE
ORa OR ba か b の少なくとも1つがTRUEの場合にTRUE
||a || ba か b の少なくとも1つがTRUEの場合にTRUE
XORa XOR ba か b のどちらか1つがTRUEの場合にTRUE
NOTNOT aa がTRUEならFALSE、a がFALSEならTRUE
!! aa がTRUEならFALSE、a がFALSEならTRUE

論理演算子では左辺及び右辺に比較演算子を使った式を記述するのが主な利用方法です。それぞれの比較演算子を評価し、さらに論理演算子を使って全体の結果として 1(=TRUE) 、 0(=FALSE) 、または NULL のいずれかを返します。

ここでは MySQL で利用可能な論理演算子の使い方について解説します。

(Last modified: )

論理積

AND 及び && は論理積です。左辺及び右辺が共に NULL でも 0 でない場合に全体が 1 となり、左辺又は右辺のいずれか一つでも 0 の場合(もう片方が NULL であっても)に全体が 0 となります。それ以外の場合は全体が NULL となります。

1 AND 1        -> 1
1 AND 0        -> 0
0 AND 1        -> 0
0 AND 0        -> 0
NULL AND 1     -> NULL
NULL AND 0     -> 0
NULL AND NULL  -> NULL

では簡単なサンプルで試してみます。

select 3 < 2, 4 > 2, 3 < 2 and 4 > 2;

論理積(1)

上記の場合、 3 < 2 が 0 を返し 4 > 2 は 1 を返します。 and の左辺が 1 ではないので 3 < 2 and 4 > 2 は 0 を返します。

もう一つ試します。

select 7 < 10, 3 > 0, 7 < 10 and 3 > 0;

論理積(2)

上記の場合、 7 < 10 が 1 を返し 3 > 0 も 1 を返します。 and の左辺および右辺が 1 なので 7 < 10 and 3 > 0 は 1 を返します。

論理和

OR 及び || は論理和です。左辺及び右辺が NULL でない場合、どちらか 1 つでも 0 でない場合に全体が 1 となり、それ以外は全体が 0 となります。どちらかが NULL の場合、もう片方が 1 の場合に全体が 1 となり、それ以外は NULL となります。

1 OR 1         -> 1
1 OR 0         -> 1
0 OR 1         -> 1
0 OR 0         -> 0
NULL OR 1      -> 1
NULL OR 0      -> NULL
NULL OR NULL   -> NULL

では簡単なサンプルで試してみます。

select 3 < 2, 4 > 2, 3 < 2 or 4 > 2;

論理和(1)

上記の場合、 3 < 2 が 0 を返し 4 > 2 は 1 を返します。 or の左辺または右辺の少なくともどちらか 1 つが 1 なので 3 < 2 or 4 > 2 は 1 を返します。

もう一つ試します。

select 7 < 4, 3 > 6, 7 < 4 or 3 > 6;

論理和(2)

上記の場合、 7 < 4 が 0 を返し 3 > 6 も 0 を返します。 or の左辺および右辺が 0 なので 7 < 4 or 3 > 6 は 0 を返します。

排他的論理和

XOR は排他的論理和です。左辺及び右辺が NULL でない場合、どちらか 1 つだけが 0 の場合に全体が 1 となります。両方が 0 、又は両方が 0 でない場合は全体が 0 となります。どちらか一つでも NULL の場合、全体が NULL となります。

1 XOR 1        -> 0
1 XOR 0        -> 1
0 XOR 1        -> 1
0 XOR 0        -> 0
NULL XOR 1     -> NULL
NULL XOR 0     -> NULL
NULL XOR NULL  -> NULL

では簡単なサンプルで試してみます。

select 3 < 2, 4 = 4, 3 < 2 xor 4 = 4;

排他的論理和(1)

上記の場合、 3 < 2 が 0 を返し 4 = 4 は 1 を返します。 xor の左辺または右辺のどちらか 1 つだけが 1 なので 3 < 2 xor 4 = 4 は 1 を返します。

もう一つ試します。

select 7 < 10, 3 > 0, 7 < 10 xor 3 > 0;

排他的論理和(2)

上記の場合、 7 < 10 が 1 を返し 3 > 0 も 1 を返します。 xor の左辺および右辺が共に 0 か共に 1 なので 7 < 10 xor 3 > 0 は 0 を返します。

論理否定

NOT と ! は論理否定です。右辺が 0 の場合に全体が 1 となり、右辺が 0 以外の場合に 1 となります。右辺が NULL の場合は全体も NULL となります。

NOT 1          -> 0
NOT 0          -> 1
NOT NULL       -> NULL

では簡単なサンプルで試してみます。

select 10 < 4, not 10 < 4;

論理否定(1)

上記の場合、 10 < 4 は 0 を返しますので not 10 < 4 は 1 を返します。

-- --

MySQL で利用可能な論理演算子の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。