SQL Academy
Premium
Funktionsreferenz

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] END

Parameter

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;
result
greater

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;
member_namerole
Headley Quinceyparent
Flavia Quinceyparent
Andie Quinceychild
Lela Quinceychild
Annie Quinceychild
Ernest Forrestparent
Constance Forrestparent
Wednesday Addamschild

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;
member_nameparent_role
Headley Quinceydad
Flavia Quinceymom
Andie Quincey<NULL>
Lela Quincey<NULL>
Annie Quincey<NULL>
Ernest Forrestdad
Constance Forrestmom
Wednesday Addams<NULL>

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.

Siehe auch

Wo du es lernst