En SQL, tous les opérateurs logiques évaluent à
TRUE
, FALSE
ou
NULL
(INCONNU). En MySQL, c'est implémenté
en 1
(TRUE), 0
(FALSE), et
NULL
. La plupart de ce qui suit est est
commun entre les différents bases de données SQL, pourtant,
certains système pourraient retourner une valeur non nulle pour
TRUE (pas obligatoirement 1).
NOT (NON) logique. Evalue à 1
si
l'opérande est 0
, à
0
si l'opérande est non nulle, et
NOT NULL
retourne
NULL
.
mysql>SELECT NOT 10;
-> 0 mysql>SELECT NOT 0;
-> 1 mysql>SELECT NOT NULL;
-> NULL mysql>SELECT ! (1+1);
-> 0 mysql>SELECT ! 1+1;
-> 1
Le dernier exemple donne 1
car
l'expression est évaluée comme (!1)+1
.
AND
(ET) logique. Evalue à
1
si toutes les opérandes sont
différentes de zéro et de NULL
, à
0
si l'une des opérandes est
0
, dans les autres cas,
NULL
est retourné.
mysql>SELECT 1 && 1;
-> 1 mysql>SELECT 1 && 0;
-> 0 mysql>SELECT 1 && NULL;
-> NULL mysql>SELECT 0 && NULL;
-> 0 mysql>SELECT NULL && 0;
-> 0
Notez que pour les versions antérieures à la 4.0.5
l'évaluation est interrompue lorsque
NULL
est rencontré, au lieu de continuer
à tester une éventuelle existence de 0
.
Cela signifie que dans ces versions, SELECT (NULL
AND 0)
retourne NULL
au lieu de
0
. En 4.0.5 le code a été revu pour que
le résultat réponde toujours au normes ANSI tout en
optimisant le plus possible.
OR (OU inclusif) logique. Evalue à 1
si
aucune opérande n'est nulle, à NULL
si
l'une des opérandes est NULL
, sinon
0
est retourné.
mysql>SELECT 1 || 1;
-> 1 mysql>SELECT 1 || 0;
-> 1 mysql>SELECT 0 || 0;
-> 0 mysql>SELECT 0 || NULL;
-> NULL mysql>SELECT 1 || NULL;
-> 1
XOR (OU exclusif) logique. Retourne NULL
si l'une des opérandes est NULL
. Pour
les opérandes non-NULL
, évalue à
1
si un nombre pair d'opérandes est
non-nul, sinon 0
est retourné.
mysql>SELECT 1 XOR 1;
-> 0 mysql>SELECT 1 XOR 0;
-> 1 mysql>SELECT 1 XOR NULL;
-> NULL mysql>SELECT 1 XOR 1 XOR 1;
-> 1
a XOR b
est mathématiquement égal à
(a AND (NOT b)) OR ((NOT a) and b)
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.