Opérateurs logiques/booléens

Les opérateurs logiques retournent le résultat d’une opération booléenne particulière sur une ou deux expressions d’entrée.

Ils ne peuvent être utilisés que comme prédicat (par exemple dans la clause WHERE). Les expressions d’entrée doivent être des prédicats.

Voir aussi :

BOOLAND , BOOLNOT , BOOLOR , BOOLXOR

Dans ce chapitre :

Liste d’opérateurs logiques/booléens

Opérateur

Exemple de syntaxe

Description

AND

a AND b

Correspond aux deux expressions (a et b).

NOT

NOT a

Ne correspond pas à l’expression.

OR

a OR b

Correspond à l’une ou l’autre expression.

L’ordre de préséance de ces opérateurs est indiqué ci-dessous (du plus élevé au plus bas) :

  • NOT

  • AND

  • OR

Exemples

Le premier exemple utilise la table et les données suivantes :

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

Les opérateurs logiques sont généralement utilisés dans les clauses WHERE :

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

Sortie :

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

Les exemples ci-dessous montrent la priorité des opérateurs logiques :

Le premier exemple montre que la priorité de AND est supérieure à la priorité de OR. La première expression correspond de la même manière à la deuxième expression, et non de la même manière que la troisième expression.

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

Sortie :

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

L’exemple suivant montre que la priorité de NOT est supérieure à la priorité de AND. La première expression correspond de la même manière à la deuxième expression, et non de la même manière que la troisième expression.

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

Sortie :

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

L’exemple suivant montre que la priorité de NOT est supérieure à la priorité de OR. La première expression correspond de la même manière à la deuxième expression, et non de la même manière que la troisième expression.

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

Sortie :

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

Les exemples suivants montrent des « tables de vérité » pour les opérateurs logiques.

Créer une nouvelle table et des données :

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

Cela montre la table de vérité pour l’opérateur OR :

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

Sortie :

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

Cela montre la table de vérité pour l’opérateur AND :

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

Sortie :

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