Geht das… case … when … (einfach)


Apache DerbyBigQueryDb2 (LUW)H2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite200520072009201120132015201720192021✓ 3.5.7+✓ 2008R2+✓ 8.3+✓ 11gR1+✓ 5.0+✓ 5.1+✓ 1.4.191+✓ 9.7+✓ 2.0+✓ 10.15.1.3+

Case ist ein bedingter SQL-Ausdruck: Er sucht die erste When-Klausel deren Wert dem der Case-Klausel gleicht (=) und liefert den Wert der entsprechenden Then-Klausel – oder den der Else-Klausel falls keiner passt oder Null, falls es keine Else-Klausel gibt.

SELECT CASE <Ausdruck> WHEN 0 THEN 'Null'
                       WHEN 1 THEN 'Eins'
                       ELSE 'weder Null noch Eins'
        END
  FROM …

Beachte, dass when null niemals greift. Verwende stattdessen case when <expr> is null.

Normative Referenzen

Der einfache Case-Ausdruck ist in ISO/IEC 9075:2016-2 als verpflichtende Funktion F261-01 definiert.

20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Twitter oder RSS um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Mit Markus Winand verbinden

Markus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf Twitter
„modern SQL“ von Markus Winand ist unter einer Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License lizenziert.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO | CC-BY-NC-ND 3.0 Lizenz