CASE-Ausdrücke in SELECT
Inline-Bedingungslogik sowie die gesuchten und einfachen CASE-Formen schreiben
CASE-Ausdrücke in SELECT ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
CASE: Bedingter Ausdruck in SQL
CASE ist das if/then/else von SQL, aber ein Ausdruck, der einen einzelnen Wert zurückgibt – daher funktioniert er überall dort, wo ein Wert erlaubt ist: in SELECT, WHERE, ORDER BY und sogar innerhalb von Aggregationen.
SELECT order_id,
amount,
CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;CASE mit Suchbedingung
Das CASE mit Suchbedingung prüft bei jedem WHEN eine boolesche Bedingung und gibt den ersten Treffer zurück. Es ist die flexibelste Form, und die Reihenfolge ist entscheidend – die erste wahre Bedingung gewinnt.
SELECT score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
ELSE 'F'
END AS grade
FROM exam_results;Einfaches CASE
Das einfache CASE vergleicht einen Ausdruck mit einer Liste von Werten. Es ist kürzer bei Gleichheitsprüfungen, kann aber weder Bereiche noch NULL-Prüfungen verarbeiten.
SELECT status_code,
CASE status_code
WHEN 1 THEN 'active'
WHEN 2 THEN 'paused'
WHEN 3 THEN 'closed'
ELSE 'unknown'
END AS status_label
FROM accounts;CASE mit Suchbedingung oder einfaches CASE: Wann welches verwenden
Verwenden Sie einfaches CASE für Gleichheitsprüfungen gegen feste Werte und ein CASE mit Suchbedingung für Bereiche oder NULL. Eine wichtige Stolperfalle: Ein einfaches CASE kann niemals auf NULL zutreffen – verwenden Sie dafür IS NULL in einem CASE mit Suchbedingung.
-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
ELSE 'has bonus'
END AS bonus_flag
FROM employees;Die Reihenfolge der WHEN-Zweige ist entscheidend
Da der erste passende Zweig gewinnt, ordnen Sie Ihre WHEN-Bedingungen von der spezifischsten zur allgemeinsten. Setzen Sie einen großzügigen Schwellenwert an den Anfang, wird ein Wert von 95 falsch eingeordnet.
-- Correct order: highest threshold first
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C or below'
END AS grade
FROM exam_results;ELSE und das implizite NULL
Wenn nichts zutrifft und Sie ELSE weglassen, gibt CASE NULL zurück. Fügen Sie ein explizites ELSE für den Standardfall hinzu, damit unerwartete Werte nicht stillschweigend zu NULL werden.
-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;Bedingte Aggregation (Pivot-Muster)
Der wertvollste Interviewtrick: die bedingte Aggregation. Platzieren Sie CASE innerhalb von SUM oder COUNT, um Zeilen pro Kategorie in einem Durchlauf zu zählen – ein übersichtlicher Bericht im Pivot-Stil.
SELECT
SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid_orders,
SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
SUM(CASE WHEN status = 'paid' THEN amount ELSE 0 END) AS paid_revenue
FROM orders;COUNT ignoriert NULL: Eine CASE-Abkürzung
Da COUNT NULL-Werte ignoriert, können Sie ELSE weglassen, sodass nicht passende Zeilen zu NULL werden und nicht gezählt werden. Das ist eine etwas kürzere Variante für bedingtes Zählen.
SELECT
COUNT(CASE WHEN status = 'paid' THEN 1 END) AS paid_orders,
COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;CASE in ORDER BY für eine benutzerdefinierte Sortierung
Verwenden Sie CASE in ORDER BY, um nach einer benutzerdefinierten Priorität statt nach einer einfachen alphabetischen oder numerischen Reihenfolge zu sortieren – etwa dringend vor normal vor allem anderen.
SELECT order_id, status
FROM orders
ORDER BY
CASE status
WHEN 'urgent' THEN 1
WHEN 'normal' THEN 2
ELSE 3
END,
order_id;Typsicherheit über alle Zweige hinweg
Alle Zweige eines CASE müssen einen kompatiblen Typ zurückgeben. Das Mischen einer Zahl und einer Zeichenfolge kann einen Fehler verursachen oder eine Typkonvertierung erzwingen – wählen Sie einen Ausgabetyp und verwenden Sie bei Bedarf eine explizite Typkonvertierung.
-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
ELSE 'none'
END AS qty_label
FROM inventory;CASE in WHERE für bedingte Filterung
CASE in WHERE ermöglicht es Ihnen, abhängig von einem Kennzeichen unterschiedliche Filterlogik anzuwenden – etwa einen unterschiedlichen Preisschwellenwert pro Region. Das ist oft übersichtlicher als ein Geflecht aus ANDs und ORs.
SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
WHEN 'US' THEN 100
WHEN 'EU' THEN 90
ELSE 50
END;Kurzer Test
Sagen Sie das Ergebnis voraus.
Zusammenfassung
Zusammenfassung: CASE gibt einen einzelnen Wert zurück und funktioniert in SELECT, WHERE, ORDER BY und Aggregationen. Ein CASE mit Suchbedingung verarbeitet Bereiche und NULL; der erste Treffer gewinnt; kein Treffer bedeutet NULL; die Typen aller Zweige müssen kompatibel sein.
Häufig gestellte Fragen
Ist die Lektion „CASE-Ausdrücke in SELECT“ kostenlos?
Ja — der vollständige Text von „CASE-Ausdrücke in SELECT“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „CASE-Ausdrücke in SELECT“?
Inline-Bedingungslogik sowie die gesuchten und einfachen CASE-Formen schreiben Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „CASE-Ausdrücke in SELECT“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Spalten projizieren und Fallstricke bei Aliasen
- Berechnete Spalten und die Rangfolge von Ausdrücken
- DISTINCT oder GROUP BY für Eindeutigkeit
- CASE-Ausdrücke in SELECT