- Kategorien:
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> )
Argumente¶
condition
Die Bedingung ist ein Ausdruck, der einen BOOLEAN-Wert (TRUE, FALSE oder NULL) ergibt.
Wenn die Bedingung
condition
den Wert TRUE ergibt, wirdexpr1
zurückgegeben, andernfalls wirdexpr2
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');
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true |
+----------------------------+
Rückgabe von expr2
, da die Bedingung falsch („false“) ergibt:
SELECT IFF(FALSE, 'true', 'false');
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false |
+-----------------------------+
Rückgabe von expr2
, da die Bedingung NULL ergibt:
SELECT IFF(NULL, 'true', 'false');
+----------------------------+
| IFF(NULL, 'TRUE', 'FALSE') |
|----------------------------|
| false |
+----------------------------+
Gibt NULL zurück, da der Wert des zurückgegebenen Ausdrucks NULL ist:
SELECT IFF(TRUE, NULL, 'false');
+--------------------------+
| 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;
+---------+---------------------------------------------------+
| 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) );
+-------+--------------------------------+
| VALUE | IFF(VALUE > 50, 'HIGH', 'LOW') |
|-------+--------------------------------|
| 22 | Low |
| 63 | High |
| 5 | Low |
| 99 | High |
| NULL | Low |
+-------+--------------------------------+