Logische/Boolesche Operatoren

Logische Operatoren geben das Ergebnis einer bestimmten booleschen Operation bei einem oder zwei Eingabeausdrücken zurück.

Sie können nur als Prädikat verwendet werden (z. B. in der WHERE-Klausel). Eingabeausdrücke müssen Prädikate sein.

Siehe auch:

BOOLAND , BOOLNOT , BOOLOR , BOOLXOR

Unter diesem Thema:

Liste der Logischen/Booleschen Operatoren

Operator

Syntaxbeispiel

Beschreibung

AND

a AND b

Stimmt mit beiden Ausdrücken überein (a und b).

NOT

NOT a

Entspricht nicht dem Ausdruck.

OR

a OR b

Entspricht einem der beiden Ausdrücke.

Die Rangfolge dieser Operatoren ist unten dargestellt (vom höchsten zum niedrigsten):

  • NOT

  • AND

  • OR

Beispiele

Im ersten Beispiel werden folgende Tabelle und Daten verwendet:

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

Logische Operatoren werden normalerweise in WHERE-Klauseln verwendet:

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

Ausgabe:

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

Die folgenden Beispiele zeigen die Prioritäten der logischen Operatoren:

Das erste Beispiel zeigt, dass AND Vorrang vor OR hat. Der erste Ausdruck wird auf dieselbe Weise wie der zweite Ausdruck ausgewertet, nicht wie der dritte Ausdruck.

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

Ausgabe:

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

Das nächste Beispiel zeigt, dass NOT Vorrang vor AND hat. Der erste Ausdruck wird auf dieselbe Weise wie der zweite Ausdruck ausgewertet, nicht wie der dritte Ausdruck.

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

Ausgabe:

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

Das nächste Beispiel zeigt, dass NOT Vorrang vor OR hat. Der erste Ausdruck wird auf dieselbe Weise wie der zweite Ausdruck ausgewertet, nicht wie der dritte Ausdruck.

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

Ausgabe:

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

Die nächsten Beispiele zeigen „Wahrheitstabellen“ für die logischen Operatoren.

Erstellen Sie eine neue Tabelle und Daten:

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

Dies zeigt die Wahrheitstabelle für den Operator OR:

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

Ausgabe:

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

Dies zeigt die Wahrheitstabelle für den Operator AND:

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

Ausgabe:

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