Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Expressão de Caso vs Declaração de Caso


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.