論理/ブール演算子

論理演算子は、1つまたは2つの入力式で特定のブール演算の結果を返します。

これらは、述語としてのみ使用できます( WHERE 句など)。入力式は述語でなければなりません。

こちらもご参照ください:

BOOLANDBOOLNOTBOOLORBOOLXOR

このトピックの内容:

論理/ブール演算子のリスト

演算子

構文例

説明

AND

a AND b

両方の表現(a および b)に一致します。

NOT

NOT a

式と一致しません。

OR

a OR b

いずれかの式に一致します。

これらの演算子の優先順位を以下に示します(最高から最低まで)。

  • NOT

  • AND

  • OR

最初の例では、次のテーブルとデータを使用します。

CREATE TABLE logical (t BOOLEAN, f BOOLEAN, n BOOLEAN);
INSERT INTO logical (t, f, n) VALUES (True, False, NULL);

通常、論理演算子は WHERE 句で使用されます。

SELECT t, f, n FROM logical WHERE t AND NOT f;

出力:

+------+-------+------+
| T    | F     | N    |
|------+-------+------|
| True | False | NULL |
+------+-------+------+

以下の例は、論理演算子の優先順位を示しています。

最初の例は、 AND の優先順位が OR の優先順位よりも高いことを示しています。最初の式は、3番目の式と同じ方法ではなく、2番目の式と同じ方法で評価されます。

SELECT TRUE OR TRUE AND FALSE, TRUE OR (TRUE AND FALSE), (TRUE OR TRUE) AND FALSE;

出力:

+------------------------+--------------------------+--------------------------+
| TRUE OR TRUE AND FALSE | TRUE OR (TRUE AND FALSE) | (TRUE OR TRUE) AND FALSE |
|------------------------+--------------------------+--------------------------|
| True                   | True                     | False                    |
+------------------------+--------------------------+--------------------------+

次の例は、 NOT の優先順位が AND の優先順位よりも高いことを示しています。最初の式は、3番目の式と同じ方法ではなく、2番目の式と同じ方法で評価されます。

SELECT NOT FALSE AND FALSE, (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE);

出力:

+---------------------+-----------------------+-----------------------+
| NOT FALSE AND FALSE | (NOT FALSE) AND FALSE | NOT (FALSE AND FALSE) |
|---------------------+-----------------------+-----------------------|
| False               | False                 | True                  |
+---------------------+-----------------------+-----------------------+

次の例は、 NOT の優先順位が OR の優先順位よりも高いことを示しています。最初の式は、3番目の式と同じ方法ではなく、2番目の式と同じ方法で評価されます。

SELECT NOT FALSE OR TRUE, (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE);

出力:

+-------------------+---------------------+---------------------+
| NOT FALSE OR TRUE | (NOT FALSE) OR TRUE | NOT (FALSE OR TRUE) |
|-------------------+---------------------+---------------------|
| True              | True                | False               |
+-------------------+---------------------+---------------------+

次のいくつかの例は、論理演算子の「真理値テーブル」を示しています。

新しいテーブルとデータを作成します。

CREATE TABLE logical2 (x BOOLEAN);
INSERT INTO logical2 (x) VALUES 
    (False),
    (True),
    (NULL);

これは、 OR 演算子の真理値テーブルを示しています。

SELECT x AS "OR", x OR False AS "FALSE", x OR True AS "TRUE", x OR NULL AS "NULL"
  FROM logical2;

出力:

+-------+-------+------+------+
| OR    | FALSE | TRUE | NULL |
|-------+-------+------+------|
| False | False | True | NULL |
| True  | True  | True | True |
| NULL  | NULL  | True | NULL |
+-------+-------+------+------+

これは、 AND 演算子の真理値テーブルを示しています。

SELECT x AS "AND", x AND False AS "FALSE", x AND True AS "TRUE", x AND NULL AS "NULL"
  FROM logical2;

出力:

+-------+-------+-------+-------+
| AND   | FALSE | TRUE  | NULL  |
|-------+-------+-------+-------|
| False | False | False | False |
| True  | False | True  | NULL  |
| NULL  | False | NULL  | NULL  |
+-------+-------+-------+-------+