Описание тега case
В CASE
Expression - это конструкция SQL, используемая для возврата различных значений в зависимости от заданных условий. Есть две формыCASE
выражение. Первый - простойCASE
:
CASE search_expr
WHEN compare_expr1 THEN result_expr1
WHEN compare_expr2 THEN result_expr2
ELSE else_expr
END
Это будет сравнивать search_expr
каждому compare_expr
по порядку, пока не найдет условие, где search_expr = compar_expr
, и верните result_expr
этого условия. Если такого условия не обнаружено,else_expr
возвращается.
Вторая форма CASE
выражение ищется CASE
:
CASE
WHEN boolean_expr1 THEN result_expr1
WHEN boolean_expr2 THEN result_expr2
ELSE else_expr
END
Это проверит boolean_expr
по порядку, пока не будет найдено условие, в котором boolean_expr
верно, и вернуть result_expr
этого условия. Если такого условия не обнаружено,else_expr
возвращается.
Есть две короткие формы для специальных CASE
выражения; COALESCE
а также NULLIF
.
COALESCE(x1, x2, ..., xn)
эквивалентно:
CASE WHEN x1 IS NOT NULL THEN x1
WHEN x2 IS NOT NULL THEN x2
...
ELSE xn
END
Т.е. COALESCE
expression возвращает значение первого ненулевого операнда, найденного при работе слева направо, или null, если все операнды равны null.
NULLIF(x1, x2)
эквивалентно
CASE WHEN x1 = x2 THEN NULL ELSE x1 END
Т.е. если операнды равны, NULLIF
возвращает null, иначе значение первого операнда.