В SQL выражение CASE оценивает список условий, возвращая результат для первого условия, которое оценивается как истинное. Для вопросов CASE языков программирования используйте вместо этого тег [switch-statement].

В CASEExpression - это конструкция 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, иначе значение первого операнда.