Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Case-Ausdruck vs. Case-Anweisung

Der CASE Ausdruck wird zu einem Wert ausgewertet, d. h. er wird verwendet, um basierend auf einer Bedingung zu einem Ergebnis aus einer Reihe von Ergebnissen zu evaluieren.
Beispiel:

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

Der CASE Die Anweisung führt eine Anweisung aus einer Reihe von Anweisungen aus, basierend auf einer bestimmten Bedingung.
Beispiel:

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

Sie sehen, wie ähnlich sie sind, aber die Anweisung nicht zu einem Wert auswerten und kann eigenständig verwendet werden, während der Ausdruck Teil eines Ausdrucks sein muss, z. eine Anfrage oder eine Aufgabe. Sie können die Anweisung nicht in einer Abfrage verwenden, da eine Abfrage keine Anweisungen enthalten kann, sondern nur Ausdrücke, die zu etwas ausgewertet werden müssen (die Abfrage selbst ist in gewisser Weise eine Anweisung), z. SELECT CASE WHEN condition THEN UPDATE table SET something; END CASE macht keinen Sinn.