- Catégories :
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> )
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 instructionSELECT
contenant des opérateurs Set, tels queUNION
,INTERSECT
,EXCEPT
etMINUS
. 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 | +----------------------------+select iff(False, 'true', 'false'); +-----------------------------+ | IFF(FALSE, 'TRUE', 'FALSE') | |-----------------------------| | false | +-----------------------------+select iff(NULL, 'true', 'false'); +----------------------------+ | IFF(NULL, 'TRUE', 'FALSE') | |----------------------------| | false | +----------------------------+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 | +---------+-----------------------------------------------+