¿Cuál es la diferencia entre un El Caso De La Expresión y un El Caso De La Declaración De en MySQL? Cuando puede ser utilizado y cuáles son los beneficios de la utilización de uno sobre el otro?

Caso sintaxis de la Instrucción:

CASE
  WHEN search_condition THEN statement_list
  [WHEN search_condition THEN statement_list] ...
  [ELSE statement_list]
END CASE

Caso la sintaxis de las expresiones:

CASE 
  WHEN [condition] THEN result 
  [WHEN [condition] THEN result ...] 
  [ELSE result] 
END

Estos parecen casi idénticas, pero la descripción inicial para el Caso de las Declaraciones es que The CASE statement for stored programs implements a complex conditional construct.

Así es la significativa diferencia de que uno es utilizado en programas almacenados y no se puede usar en consultas normales? He intentado hacer esto en una consulta yo estaba jugando con el y no – sqlfiddle. Si este es el caso, ¿por qué no usar simplemente el Caso de la Expresión en un programa almacenado?

Hay otros sintáctica diferencias a tener en cuenta, ya que parecen ser idénticos?

InformationsquelleAutor mrmryb | 2012-09-15

1 Comentario

  1. 63

    La CASE expresión se evalúa como un valor, es decir se utiliza para evaluar a uno de un conjunto de resultados, de acuerdo a 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`

    La CASE instrucción se ejecuta un conjunto de instrucciones, basándose en 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

    Que ver cómo son similares, pero la declaración de no evaluar a un valor y puede ser utilizado en su propio, mientras que la expresión debe ser una parte de una expresión, por ejemplo, una consulta o una asignación. Usted puede utilizar la declaración en una consulta, ya que una consulta no puede contener declaraciones, sólo las expresiones que necesitan para evaluar a algo (la consulta en sí es una declaración, en la forma), por ejemplo, SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE no tiene sentido.

    • Gran descripción, entiendo la diferencia ahora. Mi única confusión es cuando y cómo utilizar la Instrucción Case, sería la creación de un php consulta con la declaración que se escribió la obra? Y estoy suponiendo que la mejor manera de utilizar lo haría para seguir una consulta donde se define una variable como el resultado de otra consulta. E. g. select @action:=action from table limit 1 y, a continuación, la consulta CASE WHEN @action = 'update' THEN UPDATE sometable SET column = value WHERE condition; tendría que trabajar?
    • El CASE declaración solo puede utilizarse en rutinas almacenadas, es decir, procedimientos y funciones definidas en la base de datos. Usted puede realizar una CASE declaración como una consulta desde el script PHP.
    • Ok genial, gracias por la aclaración.

Dejar respuesta

Please enter your comment!
Please enter your name here