Kategorien:

Funktionen für bedingte Ausdrücke

IFF

Einstufiger if-then-else-Ausdruck. Ähnlich wie CASE, erlaubt jedoch nur eine einzige Bedingung.

Wenn die Bedingung condition den Wert TRUE ergibt, wird expr1 zurückgegeben, andernfalls wird expr2 zurückgegeben.

Syntax

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

Argumente

condition

Die Bedingung ist ein Ausdruck, der einen BOOLEAN-Wert (True, False oder NULL) ergibt.

expr1

Ein allgemeiner Ausdruck. Dieser Wert wird zurückgegeben, wenn die Bedingung condition erfüllt ist.

expr2

Ein allgemeiner Ausdruck. Dieser Wert wird zurückgegeben, wenn condition nicht erfüllt wird (d. h. „false“ oder NULL ist).

Nutzungshinweise

  • Die condition kann eine SELECT-Anweisung enthalten, die wiederum Mengenoperatoren enthält, z. B. UNION, INTERSECT, EXCEPT und MINUS. Stellen Sie bei der Verwendung von Mengenoperatoren sicher, dass die Datentypen kompatibel sind. Weitere Informationen dazu finden Sie unter Allgemeine Nutzungshinweise unter dem Thema Mengenoperatoren.

Sortierungsdetails

Der von der Funktion zurückgegebene Wert behält die Sortierungsspezifikation der Sortierung mit der höchsten Priorität der Argumente THEN/ELSE bei.

Beispiele

Das folgende Beispiel veranschaulicht die Funktion 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