Verständnis der SQL `CASE` Anweisung: Syntax, Anwendungsfälle und Beispiele
Takashi Yamamoto
Infrastructure Engineer · Leapcell

Key Takeaways
- Die SQL
CASE
-Anweisung fügt bedingte Logik direkt zu Abfragen hinzu. - Sie hilft, Daten effizient zu kategorisieren, zu transformieren und zu filtern.
- Die richtige Verwendung verbessert die Lesbarkeit und Flexibilität von SQL.
Die SQL CASE
-Anweisung ist ein leistungsstarker bedingter Ausdruck, mit dem Sie If-Then-Else-Logik direkt in Ihre SQL-Abfragen implementieren können. Sie ermöglicht es Ihnen, Bedingungen auszuwerten und basierend auf diesen Bedingungen bestimmte Werte zurückzugeben, wodurch Ihre Abfragen dynamischer und anpassungsfähiger werden.(https://leapcell.io/?lc_t=n_goselect)
Syntax
Es gibt zwei Hauptformen der CASE
-Anweisung:
-
Einfacher
CASE
-Ausdruck: Vergleicht einen Ausdruck mit einer Reihe einfacher Ausdrücke, um das Ergebnis zu bestimmen.(https://leapcell.io/?lc_t=n_goselect)CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE resultN END
-
Gesuchter
CASE
-Ausdruck: Wertet eine Reihe von booleschen Ausdrücken aus, um das Ergebnis zu bestimmen.(https://leapcell.io/?lc_t=n_goselect)CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE resultN END
In beiden Formen ist die ELSE
-Klausel optional. Wenn keine Bedingung erfüllt ist und kein ELSE
angegeben ist, gibt die CASE
-Anweisung NULL
zurück.(https://leapcell.io/?lc_t=n_goselect)
Anwendungsfälle und Beispiele
1. Kategorisieren von Daten
Sie können die CASE
-Anweisung verwenden, um Daten basierend auf bestimmten Bedingungen in verschiedene Gruppen zu kategorisieren.(https://leapcell.io/?lc_t=n_goselect)
SELECT TransactionID, Amount, CASE WHEN Amount < 1000 THEN 'Low' WHEN Amount >= 1000 AND Amount < 5000 THEN 'Medium' WHEN Amount >= 5000 THEN 'High' ELSE 'Unknown' END AS TransactionCategory FROM SalesTransactions;
Diese Abfrage klassifiziert Transaktionen basierend auf dem Amount
in die Kategorien 'Low', 'Medium' oder 'High'.(https://leapcell.io/?lc_t=n_goselect)
2. Umgang mit NULL-Werten
Die CASE
-Anweisung kann helfen, NULL
-Werte zu verwalten, indem sie durch aussagekräftigere Informationen ersetzt werden.(https://leapcell.io/?lc_t=n_goselect)
SELECT CustomerID, OrderDate, CASE WHEN OrderDate IS NULL THEN 'No Order Date' ELSE 'Order Placed' END AS OrderStatus FROM Orders;
Diese Abfrage kennzeichnet Bestellungen mit einem NULL
-Wert in OrderDate
als 'No Order Date' und andere als 'Order Placed'.(https://leapcell.io/?lc_t=n_goselect)
3. Erstellen von aggregierten Spalten
Sie können CASE
innerhalb von Aggregatfunktionen verwenden, um bedingte Aggregate zu berechnen.
SELECT Department, COUNT(*) AS TotalEmployees, SUM(CASE WHEN Gender = 'Male' THEN 1 ELSE 0 END) AS MaleEmployees, SUM(CASE WHEN Gender = 'Female' THEN 1 ELSE 0 END) AS FemaleEmployees FROM Employees GROUP BY Department;
Diese Abfrage zählt die Gesamtzahl der Mitarbeiter und unterteilt sie nach Geschlecht für jede Abteilung.
4. Bedingte Sortierung
Die CASE
-Anweisung kann in der ORDER BY
-Klausel verwendet werden, um Daten bedingt zu sortieren.
SELECT CustomerName, City, Country FROM Customers ORDER BY CASE WHEN City IS NULL THEN Country ELSE City END;
Diese Abfrage sortiert Kunden nach City
, aber wenn City
NULL
ist, sortiert sie sie stattdessen nach Country
.(https://leapcell.io/?lc_t=n_goselect)
5. Bedingte Filterung in der WHERE-Klausel
Sie können CASE
in der WHERE
-Klausel verwenden, um komplexe Filterlogik anzuwenden.
SELECT * FROM Projects WHERE ProjectID = CASE @Condition WHEN 1 THEN 1 WHEN 2 THEN 2 WHEN 3 THEN 3 ELSE ProjectID END;
Diese Abfrage filtert Projekte basierend auf einer dynamischen Bedingung, die durch den Parameter @Condition
bereitgestellt wird.(https://leapcell.io/?lc_t=n_goselect)
Bewährte Verfahren
-
Verwenden Sie
ELSE
, um nicht übereinstimmende Bedingungen zu behandeln: Fügen Sie immer eineELSE
-Klausel hinzu, um Fälle zu behandeln, in denen keine derWHEN
-Bedingungen erfüllt ist. Dies verhindert unerwarteteNULL
-Ergebnisse.(https://leapcell.io/?lc_t=n_goselect) -
Halten Sie die Bedingungen gegenseitig ausschliessend: Stellen Sie sicher, dass sich die
WHEN
-Bedingungen gegenseitig ausschliessen, um Mehrdeutigkeiten in den Ergebnissen zu vermeiden. -
Verwenden Sie
CASE
für die Lesbarkeit: Wenn Sie mit komplexer bedingter Logik arbeiten, könnenCASE
-Anweisungen Ihre SQL-Abfragen lesbarer und wartbarer machen als verschachtelteIF
-Anweisungen oder mehrereOR
-Bedingungen.(https://leapcell.io/?lc_t=n_goselect)
Fazit
Die SQL CASE
-Anweisung ist ein vielseitiges Werkzeug, mit dem Sie bedingte Logik in Ihre Abfragen einführen können. Indem Sie CASE
verstehen und effektiv nutzen, können Sie komplexe Datentransformationen, Aggregationen und Filterungen direkt in Ihren SQL-Anweisungen durchführen, was zu effizienterem und lesbarerem Code führt.(https://leapcell.io/?lc_t=n_goselect)
FAQs
Um If-Then-Else-Logik in SQL-Abfragen zu ermöglichen.
Sie ermöglicht dynamische Datenkategorisierung und bedingte Ergebnisse.
Um nicht übereinstimmende Bedingungen zu behandeln und unerwartete NULL-Werte zu vermeiden.
Wir sind Leapcell, Ihre erste Wahl für das Hosten von Backend-Projekten.
Leapcell ist die Next-Gen Serverless Plattform für Webhosting, Async Tasks und Redis:
Multi-Language Support
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Deployen Sie unbegrenzt Projekte kostenlos
- Zahlen Sie nur für die Nutzung - keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 US-Dollar unterstützen 6,94 Millionen Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Developer Experience
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatische CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für umsetzbare Erkenntnisse.
Mühelose Skalierbarkeit und hohe Leistung
- Auto-Scaling zur einfachen Bewältigung hoher Parallelität.
- Null Betriebsaufwand - konzentrieren Sie sich einfach auf den Aufbau.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ