CASE
SQL-Konstrukt
Prüft die WHEN-Zweige der Reihe nach und gibt das Ergebnis des ersten passenden Zweigs zurück.
PostgreSQL 17.5
CASE [expression] WHEN condition THEN result [WHEN ...] [ELSE result] ENDParameter
- expressionoptional
- Ausdruck, der mit den Werten in den WHEN-Zweigen verglichen wird
- conditionboolean
- Bedingung des Zweigs oder, wenn expression angegeben ist, der Vergleichswert
- result
- Wert, den der Zweig zurückgibt, wenn seine Bedingung erfüllt ist
- ELSE resultoptional
- Wert, wenn kein Zweig passt
Rückgabewert
Ergebnis des ersten zutreffenden Zweigs; NULL, wenn kein Zweig zutrifft und es kein ELSE gibt
Beispiele
Vergleich zweier Zahlen
PostgreSQL 17.5
SELECT CASE
WHEN 10 > 5 THEN 'greater'
ELSE 'less or equal'
END AS result;Rolle in der Familie nach Status
PostgreSQL 17.5
SELECT member_name,
CASE
WHEN status IN ('father', 'mother') THEN 'parent'
ELSE 'child'
END AS role
FROM FamilyMembers;Einfache Form ohne ELSE
PostgreSQL 17.5
SELECT member_name,
CASE
status
WHEN 'father' THEN 'dad'
WHEN 'mother' THEN 'mom'
END AS parent_role
FROM FamilyMembers;Details
CASE hat zwei Formen. Ohne expression hat jedes WHEN eine eigene Bedingung. Mit expression wird es per = mit dem Wert jedes Zweigs verglichen, deshalb greift ein Zweig WHEN NULL nie: Um auf NULL zu prüfen, verwende die Form ohne expression und die Bedingung WHEN expression IS NULL.