- Catégories :
BOOLOR¶
Calcule le booléen OR de deux expressions numériques. Conformément à la sémantique booléenne :
Les valeurs différentes de zéro, y compris les nombres négatifs, sont considérées comme « true ».
Les valeurs égales à zéro sont considérées comme « false ».
En conséquence, la fonction renvoie :
Truesi les deux expressions sont non nulles ou qu’une expression est non nulle et l’autre expression est zéro ou NULL.Falsesi les deux expressions sont égales à zéro.NULLsi les deux expressions sont NULL ou une expression est NULL et l’autre expression est zéro.
Syntaxe¶
BOOLOR( <expr1> , <expr2> )
Arguments¶
expr1Une expression numérique
expr2Une expression numérique
Renvoie¶
Cette fonction renvoie une valeur de type BOOLEAN ou NULL.
Notes sur l’utilisation¶
Cette fonction arrondit les nombres à virgule flottante. Par conséquent, elle peut renvoyer des résultats inattendus lorsqu’elle arrondit les nombres à virgule flottante non nuls à zéro.
Pour des exemples de ce comportement et de solutions de contournement, voir Calcule les résultats OR du booléen pour les nombres à virgule flottante.
Exemples¶
Les exemples suivants utilisent la fonction BOOLOR.
Calcule les résultats OR du booléen pour les entiers et les valeurs NULL¶
La requête suivante calcule les résultats OR du booléen pour les entiers et les valeurs NULL :
SELECT BOOLOR(1, 2),
BOOLOR(0, 2),
BOOLOR(3, NULL),
BOOLOR(0, 0),
BOOLOR(NULL, 0),
BOOLOR(NULL, NULL);
+--------------+--------------+-----------------+--------------+-----------------+--------------------+
| BOOLOR(1, 2) | BOOLOR(0, 2) | BOOLOR(3, NULL) | BOOLOR(0, 0) | BOOLOR(NULL, 0) | BOOLOR(NULL, NULL) |
|--------------+--------------+-----------------+--------------+-----------------+--------------------|
| True | True | True | False | NULL | NULL |
+--------------+--------------+-----------------+--------------+-----------------+--------------------+
Calcule les résultats OR du booléen pour les nombres à virgule flottante¶
Les exemples suivants montrent comment la fonction peut renvoyer des résultats inattendus pour des nombres à virgule flottante qui s’arrondissent à zéro.
Pour les requêtes suivantes, un résultat True peut être attendu pour les appels de fonction suivants, mais ils renvoient False car la fonction arrondit les valeurs à virgule flottante non nulles à zéro :
SELECT BOOLOR(0.4, 0.3);
+------------------+
| BOOLOR(0.4, 0.3) |
|------------------|
| False |
+------------------+
SELECT BOOLOR(-0.4, 0.3);
+-------------------+
| BOOLOR(-0.4, 0.3) |
|-------------------|
| False |
+-------------------+
Pour les requêtes suivantes, un résultat True peut être attendu pour les appels de fonction suivants, mais ils renvoient NULL :
SELECT BOOLOR(0.4, NULL);
+-------------------+
| BOOLOR(0.4, NULL) |
|-------------------|
| NULL |
+-------------------+
SELECT BOOLOR(-0.4, NULL);
+--------------------+
| BOOLOR(-0.4, NULL) |
|--------------------|
| NULL |
+--------------------+
Si nécessaire, vous pouvez contourner ce comportement d’arrondi pour les valeurs à virgule flottante en utilisant l’opérateur logique OR au lieu de la fonction. Par exemple, la requête suivante renvoie True :
SELECT 0.4 OR 0.3;
+------------+
| 0.4 OR 0.3 |
|------------|
| True |
+------------+