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.
Dans ce chapitre :
Liste d’opérateurs logiques/booléens¶
Opérateur |
Exemple de syntaxe |
Description |
---|---|---|
|
|
Correspond aux deux expressions ( |
|
|
Ne correspond pas à l’expression. |
|
|
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);
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;Sortie :
+------+-------+------+ | T | F | N | |------+-------+------| | True | False | NULL | +------+-------+------+
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;Sortie :
+------------------------+--------------------------+--------------------------+ | TRUE OR TRUE AND FALSE | TRUE OR (TRUE AND FALSE) | (TRUE OR TRUE) AND FALSE | |------------------------+--------------------------+--------------------------| | True | True | False | +------------------------+--------------------------+--------------------------+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);Sortie :
+---------------------+-----------------------+-----------------------+ | NOT FALSE AND FALSE | (NOT FALSE) AND FALSE | NOT (FALSE AND FALSE) | |---------------------+-----------------------+-----------------------| | False | False | True | +---------------------+-----------------------+-----------------------+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);Sortie :
+-------------------+---------------------+---------------------+ | NOT FALSE OR TRUE | (NOT FALSE) OR TRUE | NOT (FALSE OR TRUE) | |-------------------+---------------------+---------------------| | True | True | False | +-------------------+---------------------+---------------------+
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);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;Sortie :
+-------+-------+------+------+ | OR | FALSE | TRUE | NULL | |-------+-------+------+------| | False | False | True | NULL | | True | True | True | True | | NULL | NULL | True | NULL | +-------+-------+------+------+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;Sortie :
+-------+-------+-------+-------+ | AND | FALSE | TRUE | NULL | |-------+-------+-------+-------| | False | False | False | False | | True | False | True | NULL | | NULL | False | NULL | NULL | +-------+-------+-------+-------+