O
CASE
expressão avalia um valor, ou seja, é usada para avaliar um de um conjunto de resultados, com base em alguma condição.Exemplo:
SELECT CASE
WHEN type = 1 THEN 'foo'
WHEN type = 2 THEN 'bar'
ELSE 'baz'
END AS name_for_numeric_type
FROM sometable`
O
CASE
A instrução executa uma de um conjunto de instruções, com base em alguma condição.Exemplo:
CASE
WHEN action = 'update' THEN
UPDATE sometable SET column = value WHERE condition;
WHEN action = 'create' THEN
INSERT INTO sometable (column) VALUES (value);
END CASE
Você vê como eles são semelhantes, mas a declaração não avaliar como um valor e pode ser usado por conta própria, enquanto a expressão precisa ser parte de uma expressão, por exemplo uma consulta ou uma atribuição. Você não pode usar a instrução em uma consulta, pois uma consulta não pode conter instruções, apenas expressões que precisam avaliar algo (a consulta em si é uma instrução, de certa forma), por exemplo,
SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE
não faz sentido.