sql >> Base de Datos >  >> RDS >> Mysql

Expresión de caso vs Declaración de caso

El CASE expresión se evalúa como un valor, es decir, se utiliza para evaluar uno de un conjunto de resultados, en función de alguna condición.
Ejemplo:

SELECT CASE
    WHEN type = 1 THEN 'foo'
    WHEN type = 2 THEN 'bar'
    ELSE 'baz'
END AS name_for_numeric_type
FROM sometable`

El CASE instrucción ejecuta una de un conjunto de instrucciones, en función de alguna condición.
Ejemplo:

CASE
    WHEN action = 'update' THEN
        UPDATE sometable SET column = value WHERE condition;
    WHEN action = 'create' THEN
        INSERT INTO sometable (column) VALUES (value);
END CASE

Ves cómo son similares, pero la declaración no evalúa a un valor y se puede usar por sí solo, mientras que la expresión debe ser parte de una expresión, p. una consulta o una tarea. No puede usar la declaración en una consulta, ya que una consulta no puede contener declaraciones, solo expresiones que deben evaluarse como algo (la consulta en sí misma es una declaración, en cierto modo), p. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE no tiene sentido.