In SQL, the CASE expression evaluates a list of conditions, returning the result for the first condition which evaluates to true. For programming languages' CASE questions, use the [switch-statement] tag instead.
The CASE
expression is an SQL construction used to return different values depending on specified conditions. There are two forms of the CASE
expression. The first is the simple CASE
:
CASE search_expr
WHEN compare_expr1 THEN result_expr1
WHEN compare_expr2 THEN result_expr2
ELSE else_expr
END
This will compare search_expr
to each compare_expr
in order until it finds a condition where search_expr = compar_expr
, and return the result_expr
of that condition. If no such condition is found the else_expr
is returned.
The second form of CASE
expression is the searched CASE
:
CASE
WHEN boolean_expr1 THEN result_expr1
WHEN boolean_expr2 THEN result_expr2
ELSE else_expr
END
This will test boolean_expr
in order until it finds a condition where the boolean_expr
is true, and return the result_expr
of that condition. If no such condition is found the else_expr
is returned.
There are two short forms for special CASE
expressions; COALESCE
and NULLIF
.
COALESCE(x1, x2, ..., xn)
is equivalent to:
CASE WHEN x1 IS NOT NULL THEN x1
WHEN x2 IS NOT NULL THEN x2
...
ELSE xn
END
I.e. the COALESCE
expression returns the value of the first non-null operand, found by working from left to right, or null if all the operands equal null.
NULLIF(x1, x2)
is equivalent to
CASE WHEN x1 = x2 THEN NULL ELSE x1 END
I.e. if the operands are equal, NULLIF
returns null, otherwise the value of the first operand.