Catégories :

Fonctions d’expressions conditionnelles

IFF

Expression if-then-else à un niveau. Similaire à CASE, mais ne permet qu’une seule condition.

Si la condition correspond à TRUE, renvoie expr1, sinon renvoie expr2.

Syntaxe

IFF( <condition> , <expr1> , <expr2> )
Copy

Arguments

condition

La condition est une expression qui doit donner une valeur BOOLEAN (True, False ou NULL).

expr1

Une expression générale. Cette valeur est renvoyée si la condition est vraie.

expr2

Une expression générale. Cette valeur est renvoyée si la condition est fausse (c’est-à-dire si elle est false ou NULL).

Notes sur l’utilisation

  • La condition peut inclure une instruction SELECT contenant des opérateurs Set, 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 Opérateurs Set.

Détails du classement

La valeur renvoyée par la fonction conserve la spécification de classement du résultat avec le classement le plus élevé -préséance des arguments THEN/ELSE.

Exemples

L’exemple suivant illustre la fonction IFF :

select iff(True, 'true', 'false');
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true                       |
+----------------------------+
Copy
select iff(False, 'true', 'false');
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false                       |
+-----------------------------+
Copy
select iff(NULL, 'true', 'false');
+----------------------------+
| IFF(NULL, 'TRUE', 'FALSE') |
|----------------------------|
| false                      |
+----------------------------+
Copy
SELECT val, IFF(val::int = val, 'integer', 'non-integer')
    FROM ( SELECT column1 as val
               FROM values(1.0), (1.1), (-3.1415), (-5.000), (null) )
    ORDER BY val DESC;
+---------+-----------------------------------------------+
|     VAL | IFF(VAL::INT = VAL, 'INTEGER', 'NON-INTEGER') |
|---------+-----------------------------------------------|
|    NULL | non-integer                                   |
|  1.1000 | non-integer                                   |
|  1.0000 | integer                                       |
| -3.1415 | non-integer                                   |
| -5.0000 | integer                                       |
+---------+-----------------------------------------------+
Copy