Kategorien:

Funktionen für bedingte Ausdrücke

IFF

Gibt einen von zwei Werten zurück, je nachdem, ob ein boolescher Ausdruck „true“ oder „false“ ergibt. Diese Funktion ist vergleichbar mit einem einstufigen if-then-else-Ausdruck. Sie ist ähnlich wie CASE, erlaubt jedoch nur eine einzige Bedingung. Sie können damit bedingte Logik zu SQL-Anweisungen hinzufügen.

Syntax

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

Argumente

condition

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

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

expr1

Ein allgemeiner Ausdruck. Die Funktion gibt diesen Wert zurück, wenn die condition wahr ist.

expr2

Ein allgemeiner Ausdruck. Die Funktion gibt diesen Wert zurück, wenn condition nicht wahr ist (d. h. wenn sie falsch oder NULList).

Rückgabewerte

Diese Funktion kann einen Wert eines beliebigen Typs zurückgeben. Die Funktion kann NULL zurückgeben, wenn der Wert des zurückgegebenen Ausdrucks NULL ist.

Nutzungshinweise

Die Bedingung condition kann eine SELECT-Anweisung enthalten, die wiederum Mengenoperatoren enthält, z. B. UNION, INTERSECT und EXCEPT (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 Präferenz der Argumente expr1 und expr2 bei.

Beispiele

Die folgenden Beispiele verwenden die Funktion IFF.

Rückgabe von expr1, da die Bedingung wahr („true“) ergibt:

SELECT IFF(TRUE, 'true', 'false');
Copy
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true                       |
+----------------------------+

Rückgabe von expr2, da die Bedingung falsch („false“) ergibt:

SELECT IFF(FALSE, 'true', 'false');
Copy
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false                       |
+-----------------------------+

Rückgabe von expr2, da die Bedingung NULL ergibt:

SELECT IFF(NULL, 'true', 'false');
Copy
+----------------------------+
| IFF(NULL, 'TRUE', 'FALSE') |
|----------------------------|
| false                      |
+----------------------------+

Gibt NULL zurück, da der Wert des zurückgegebenen Ausdrucks NULL ist:

SELECT IFF(TRUE, NULL, 'false');
Copy
+--------------------------+
| IFF(TRUE, NULL, 'FALSE') |
|--------------------------|
| NULL                     |
+--------------------------+

Rückgabe von expr1 (integer), wenn der Wert eine Ganzzahl ist, oder expr2 (non-integer), wenn der Wert keine Ganzzahl ist:

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;
Copy
+---------+---------------------------------------------------+
|   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                                           |
+---------+---------------------------------------------------+

Rückgabe von expr1 (High), wenn der Wert größer als 50 ist, oder expr2 (Low), wenn der Wert 50 oder kleiner ist (oder NULL):

SELECT value, IFF(value > 50, 'High', 'Low')
FROM ( SELECT column1 AS value
         FROM VALUES(22), (63), (5), (99), (NULL) );
Copy
+-------+--------------------------------+
| VALUE | IFF(VALUE > 50, 'HIGH', 'LOW') |
|-------+--------------------------------|
|    22 | Low                            |
|    63 | High                           |
|     5 | Low                            |
|    99 | High                           |
|  NULL | Low                            |
+-------+--------------------------------+