【MySQL】論理演算 - 真偽値の演算と演算子

【MySQL】論理演算 - 真偽値の演算と演算子

論理値に対する演算を論理演算と呼びます。

複数の論理値を1つの論理値として算出したり、論理値を反転することが可能です。

ここでは、論理演算について解説します。

検証環境

論理演算

論理演算は“論理値に対する演算”です。

演算結果として、1つの論理値(TRUE/FALSE)を算出します。

論理演算には論理積や論理和、排他的論理和、否定などの種類があります。

論理演算子

論理演算子は“論理演算の種類を表す記号”です。

次の表のように論理演算に対応した演算子があります。

演算子(A,Bは値)
演算 意味 演算子 構文
論理積 AとBの両方がTRUEならTRUE AND, && A AND B, A && B
論理和 AとBのいずれかでもTRUEならTRUE OR, || A OR B, A || B
排他的論理和 AとBの一方のみTRUEならTRUE XOR A XOR B
否定 Aの論理値を反転 NOT, ! NOT A, !A

論理積(AND, &&

論理積は“2つの論理値の両方がTRUEの場合はTRUE、それ以外をFALSEとする演算”です。

言語化した場合、一般的には“かつ”を使って表現し“AかつBがTRUEの場合はTRUEとする”と要約します。

論理積の演算パターンは次の4つです。

A B 論理積
true true true
true false false
false true false
false false false

基本構文

A AND B

サンプル

mysql> SELECT TRUE AND TRUE, TRUE AND FALSE, FALSE AND TRUE, FALSE AND FALSE;
+---------------+----------------+----------------+-----------------+
| TRUE AND TRUE | TRUE AND FALSE | FALSE AND TRUE | FALSE AND FALSE |
+---------------+----------------+----------------+-----------------+
|             1 |              0 |              0 |               0 |
+---------------+----------------+----------------+-----------------+
1 row in set (0.00 sec)

&&演算子でも同様の演算が可能です。

mysql> SELECT TRUE && TRUE, TRUE && FALSE, FALSE && TRUE, FALSE && FALSE;
+--------------+---------------+---------------+----------------+
| TRUE && TRUE | TRUE && FALSE | FALSE && TRUE | FALSE && FALSE |
+--------------+---------------+---------------+----------------+
|            1 |             0 |             0 |              0 |
+--------------+---------------+---------------+----------------+
1 row in set, 4 warnings (0.00 sec)

論理和(OR, ||

論理和は“2つの論理値の一方でもTRUEの場合はTRUE、それ以外はFALSEとする演算”です。

言語化した場合、一般的には“または”を使って表現し“AまたはBがTRUEの場合はTRUEとする”と要約します。

論理和の演算パターンは次の4つです。

A B 論理和
true true true
true false true
false true true
false false false

基本構文

A OR B

サンプル

mysql> SELECT TRUE OR TRUE, TRUE OR FALSE, FALSE OR TRUE, FALSE OR FALSE;
+--------------+---------------+---------------+----------------+
| TRUE OR TRUE | TRUE OR FALSE | FALSE OR TRUE | FALSE OR FALSE |
+--------------+---------------+---------------+----------------+
|            1 |             1 |             1 |              0 |
+--------------+---------------+---------------+----------------+
1 row in set (0.00 sec)

また、||演算子でも同様の演算が可能です。

mysql> SELECT TRUE || TRUE, TRUE || FALSE, FALSE || TRUE, FALSE || FALSE;
+--------------+---------------+---------------+----------------+
| TRUE || TRUE | TRUE || FALSE | FALSE || TRUE | FALSE || FALSE |
+--------------+---------------+---------------+----------------+
|            1 |             1 |             1 |              0 |
+--------------+---------------+---------------+----------------+
1 row in set, 4 warnings (0.00 sec)

排他的論理和(XOR

排他的論理和は“2つの論理値の一方のみTRUEの場合はTRUE、それ以外はFALSEとする演算”です。

一般的には言語化した場合、“AまたはBのいずれか一方のみTRUEの場合はTRUEとする”と要約します。

排他的論理和の演算パターンは次の4つです。

A B 排他的論理和
true true false
true false true
false true true
false false false

基本構文

A XOR B

サンプル

mysql> SELECT TRUE XOR TRUE, TRUE XOR FALSE, FALSE XOR TRUE, FALSE XOR FALSE;
+---------------+----------------+----------------+-----------------+
| TRUE XOR TRUE | TRUE XOR FALSE | FALSE XOR TRUE | FALSE XOR FALSE |
+---------------+----------------+----------------+-----------------+
|             0 |              1 |              1 |               0 |
+---------------+----------------+----------------+-----------------+
1 row in set (0.00 sec)

否定(NOT, !

否定は“論理値を反転する演算”です。

一般的には言語化した場合、“AがTRUEならFALSE、AがFALSEならTRUEとする”と要約します。

否定の演算パターンは次の2つです。

A 否定
true false
false true

基本構文

NOT A

サンプル

mysql> SELECT NOT TRUE, NOT FALSE;
+----------+-----------+
| NOT TRUE | NOT FALSE |
+----------+-----------+
|        0 |         1 |
+----------+-----------+
1 row in set (0.00 sec)

また、!演算子でも同様の演算を行えます。

mysql> SELECT !TRUE, !FALSE;
+-------+--------+
| !TRUE | !FALSE |
+-------+--------+
|     0 |      1 |
+-------+--------+
1 row in set, 2 warnings (0.00 sec)