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 Bedingung den Wert TRUE ergibt, wird Ausdruck1 zurückgegeben, andernfalls wird Ausdruck2 zurückgegeben.

Syntax

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

Argumente

Bedingung

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

Ausdruck1

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

Ausdruck2

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

Nutzungshinweise

  • Die Bedingung 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                       |
+----------------------------+
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                                       |
+---------+-----------------------------------------------+