IFF
Renvoie l’une des deux valeurs, selon que l’expression booléenne est évaluée sur true ou sur false. Cette fonction est similaire à une expression if-then-else à un seul niveau. Elle est similaire à CASE , mais n’autorise qu’une seule condition. Vous pouvez l’utiliser pour ajouter une logique conditionnelle aux instructions SQL.
Syntaxe
Copy Expand
IFF ( <condition> , <expr1> , <expr2> )
Show less See more
Scroll to top
Arguments
condition La condition est une expression qui doit être évaluée sur une valeur BOOLEAN (TRUE, FALSE ou NULL).
Si la condition correspond à TRUE, renvoie expr1 , sinon renvoie expr2 .
expr1 Une expression générale. La fonction renvoie cette valeur si la condition est vraie.
expr2 Une expression générale. La fonction renvoie cette valeur si la condition n’est pas vraie (c’est-à-dire si elle est fausse ou NULL).
Renvoie
Cette fonction peut renvoyer une valeur de n’importe quel type. La fonction peut renvoyer NULL si la valeur de l’expression renvoyée est NULL.
Notes sur l’utilisation
La condition peut inclure une instruction SELECT contenant des opérateurs d’ensemble tels que UNION, INTERSECT, EXCEPT et MINUS. Lorsque vous utilisez des opérateurs Set, assurez-vous que les types de données sont compatibles. Pour plus d’informations, voir Notes générales sur l’utilisation dans la rubrique Définir les opérateurs .
Détails du classement
La valeur renvoyée par la fonction conserve la spécification de classement du classement ayant la plus haute priorité des arguments expr1 et expr2 .
Exemples
Les exemples suivants utilisent la fonction IFF .
Renvoie expr1 , car la condition est évaluée sur true :
Copy Expand
SELECT IFF ( TRUE , 'true' , 'false' );
Show less See more
Scroll to top
Expand
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true |
+----------------------------+
Show less See more
Scroll to top
Renvoie expr2 , car la condition est évaluée sur false :
Copy Expand
SELECT IFF ( FALSE , 'true' , 'false' );
Show less See more
Scroll to top
Expand
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false |
+-----------------------------+
Show less See more
Scroll to top
Renvoie expr2 , car la condition est évaluée sur NULL :
Copy Expand
SELECT IFF ( NULL , 'true' , 'false' );
Show less See more
Scroll to top
Expand
+----------------------------+
| IFF(NULL, 'TRUE', 'FALSE') |
|----------------------------|
| false |
+----------------------------+
Show less See more
Scroll to top
Renvoie NULL car la valeur de l’expression retournée est NULL :
Copy Expand
SELECT IFF ( TRUE , NULL , 'false' );
Show less See more
Scroll to top
Expand
+--------------------------+
| IFF(TRUE, NULL, 'FALSE') |
|--------------------------|
| NULL |
+--------------------------+
Show less See more
Scroll to top
Renvoie expr1 (integer ) si la valeur est un entier, ou renvoie expr2 (non-integer ) si la valeur n’est pas un entier :
Copy Expand
SELECT value , IFF ( value ::INT = value , 'integer' , 'non-integer' )
FROM ( SELECT column1 AS value
FROM VALUES ( 1 . 0 ), ( 1 . 1 ), (- 3 . 1415 ), (- 5 . 000 ), ( NULL ) )
ORDER BY value DESC ;
Show less See more
Scroll to top
Expand
+---------+---------------------------------------------------+
| VALUE | IFF(VALUE::INT = VALUE, 'INTEGER', 'NON-INTEGER') |
|---------+---------------------------------------------------|
| NULL | non-integer |
| 1.1000 | non-integer |
| 1.0000 | integer |
| -3.1415 | non-integer |
| -5.0000 | integer |
+---------+---------------------------------------------------+
Show less See more
Scroll to top
Renvoie expr1 (High ) si la valeur est supérieure à 50, ou renvoie expr2 (Low ) si la valeur est inférieure ou égale à 50 (ou NULL) :
Copy Expand
SELECT value , IFF ( value > 50 , 'High' , 'Low' )
FROM ( SELECT column1 AS value
FROM VALUES ( 22 ), ( 63 ), ( 5 ), ( 99 ), ( NULL ) );
Show less See more
Scroll to top
Expand
+-------+--------------------------------+
| VALUE | IFF(VALUE > 50, 'HIGH', 'LOW') |
|-------+--------------------------------|
| 22 | Low |
| 63 | High |
| 5 | Low |
| 99 | High |
| NULL | Low |
+-------+--------------------------------+
Show less See more
Scroll to top