NULLIF und IIF
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy — Lektion 4 von 27.
Zwei weitere bedingte Helfer, beide klein und nützlich.
NULLIF(a, b) gibt NULL zurück, wenn a = b, andernfalls a. Die klassische Anwendung ist der Schutz vor einer Division durch Null:
SELECT total / NULLIF(count, 0) AS average
FROM statsWenn count null ist, erhalten wir NULL anstelle eines Fehlers.
IIF(cond, a, b) ist eine Kurzschreibweise mit zwei Zweigen für CASE WHEN cond THEN a ELSE b END. Verwenden Sie sie, wenn die Auswahl binär ist; greifen Sie zu CASE, wenn es mehr Zweige gibt.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>matches</strong>:<strong>id</strong>,<strong>shots</strong>,<strong>goals</strong>
Gib für jedes Spiel Folgendes zurück:
idconversion:goals * 1.0 / shots, aberNULL, wennshotsgleich0ist (verwendeNULLIF)verdict:'win', wenngoals > 0, ansonsten'no goals'(verwendeIIF)
Sortiere nach id.
Spickzettel
NULLIF(a, b) gibt NULL zurück, wenn a = b ist, andernfalls wird a zurückgegeben. Nützlich, um Divisionen durch Null zu vermeiden:
SELECT total / NULLIF(count, 0) AS average
FROM statsIIF(cond, a, b) ist eine Abkürzung für ein zwei-verzweigtes CASE:
SELECT IIF(goals > 0, 'win', 'no goals') AS verdict
FROM matchesProbier es selbst
SELECT id,
-- Konvertierung mit NULLIF
-- Bewertung mit IIF
FROM matches
ORDER BY id
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Über die Grundlagen hinaus
1Bedingte Logik
CASE WHENCASE in ORDER BYCOALESCE für NULL-WerteNULLIF und IIFZusammenfassung - Anwesenheit