Caso di Espressione vs Caso di Dichiarazione

Qual è la differenza tra un Caso Di Espressione e un Caso Di Dichiarazione in MySQL? Quando possono essere utilizzati, e quali sono i vantaggi di utilizzare uno sopra l’altro?

Caso la sintassi dell’Istruzione:

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

Caso la sintassi dell’Espressione:

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

Questi sembrano quasi identici, ma la descrizione iniziale per il Caso di Dichiarazioni è che The CASE statement for stored programs implements a complex conditional construct.

Così la notevole differenza che uno è utilizzato in programmi memorizzati e non utilizzabili in una normale query? Ho provato questo su una query che stavo giocando e non è riuscito – sqlfiddle. Se questo è il caso, però, perché non basta usare l’Espressione Case in un programma memorizzato?

Ci sono altre differenze sintattiche di essere a conoscenza, visto che sembrano essere identici?

InformationsquelleAutor mrmryb | 2012-09-15



One Reply
  1. 63

    Il CASE espressione restituisce un valore, cioè, è utilizzato per valutare uno di una serie di risultati, sulla base di alcune condizioni.

    Esempio:

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

    Il CASE istruzione esegue una serie di istruzioni, sulla base di alcune condizioni.

    Esempio:

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

    Vedete come sono simili, ma la dichiarazione non restituisce un valore e può essere utilizzato sul proprio, mentre l’espressione deve essere una parte di un’espressione, ad esempio, una query o un incarico. Non è possibile utilizzare l’istruzione in una query, dal momento che una query non può contenere istruzioni, solo espressioni che devono valutare per qualcosa (la query è una dichiarazione che, in un modo), ad esempio SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE non ha senso.

    • Ottima descrizione, ho capito la differenza ora. Il mio solo confusione è quando e come utilizzare l’Istruzione Case, sarebbe la creazione di una query php con l’affermazione che hai scritto funziona? E sto assumendo il modo migliore per utilizzare per seguire una query in cui si imposta una variabile come il risultato di un’altra query. E. g. select @action:=action from table limit 1 e quindi la query CASE WHEN @action = 'update' THEN UPDATE sometable SET column = value WHERE condition; vorrei che lavoro?
    • Il CASE istruzione può essere utilizzata solo in stored routine, vale a dire le procedure e le funzioni definite nel database. Non è possibile eseguire un CASE istruzione di query da PHP script.
    • Ok ottimo, grazie per il chiarimento.

Lascia un commento