Ответ 1
Выражение CASE
оценивается значением, то есть оно используется для оценки одного из набора результатов на основе некоторого условия.
Пример:
SELECT CASE
WHEN type = 1 THEN 'foo'
WHEN type = 2 THEN 'bar'
ELSE 'baz'
END AS name_for_numeric_type
FROM sometable`
Оператор CASE
выполняет один из множества операторов, основанный на некотором условии.
Пример:
CASE
WHEN action = 'update' THEN
UPDATE sometable SET column = value WHERE condition;
WHEN action = 'create' THEN
INSERT INTO sometable (column) VALUES (value);
END CASE
Вы видите, как они похожи, но оператор не оценивает значение и может использоваться сам по себе, в то время как выражение должно быть частью выражения, например. запрос или задание. Вы не можете использовать оператор в запросе, так как запрос не может содержать операторов, а только выражения, которые должны оценивать что-либо (сам запрос является выражением в некотором смысле), например. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE
не имеет смысла.