論理/ブール演算子¶
論理演算子は、1つまたは2つの入力式で特定のブール演算の結果を返します。
これらは、述語としてのみ使用できます( WHERE 句など)。入力式は述語でなければなりません。
このトピックの内容:
論理/ブール演算子のリスト¶
演算子 |
構文例 |
説明 |
---|---|---|
|
|
両方の表現( |
|
|
式と一致しません。 |
|
|
いずれかの式に一致します。 |
これらの演算子の優先順位を以下に示します(最高から最低まで)。
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 | +-------+-------+-------+-------+