- 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. 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).
Rückgabewerte¶
Diese Funktion gibt einen Wert vom Datentyp VARCHAR zurück.
Nutzungshinweise¶
Die Bedingung
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 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 |
+----------------------------+
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 |
+-------+--------------------------------+