NULLIF
Vergleicht zwei Werte und gibt NULL zurück, wenn sie gleich sind.
MySQL 8.1
NULLIF(value_1, value_2)Parameter
- value_1
- Wert, der zurückgegeben wird, wenn die Argumente ungleich sind
- value_2
- Wert, mit dem value_1 verglichen wird
Rückgabewert
NULL, wenn die Argumente gleich sind, sonst value_1
Beispiele
Gleiche Werte ergeben NULL
MySQL 8.1
SELECT NULLIF('SQL Academy', 'SQL Academy');Verschiedene Werte ergeben den ersten
MySQL 8.1
SELECT NULLIF('SQL', 'Academy');Leere Promocodes werden nicht gezählt
MySQL 8.1
SELECT COUNT(promo_code) AS filled,
COUNT(NULLIF(TRIM(promo_code), '')) AS with_code
FROM orders;Division ohne Division durch null
MySQL 8.1
SELECT session_id,
pages_viewed,
duration_sec,
ROUND(pages_viewed * 60 / NULLIF(duration_sec, 0), 1) AS pages_per_minute
FROM sessions
WHERE duration_sec < 20
ORDER BY session_id
LIMIT 5;Details
NULLIF(a, b) ist eine Kurzform von CASE WHEN a = b THEN NULL ELSE a END. Meist wird sie verwendet, um einen «leeren» Wert in NULL zu verwandeln: Dann überspringen ihn COUNT, AVG und COALESCE.
Die zweite häufige Aufgabe ist die Division: x / NULLIF(y, 0) gibt NULL statt einer Division durch null zurück. In MySQL ergibt die Division durch 0 ohnehin NULL, in PostgreSQL aber einen Fehler, daher funktioniert die Schreibweise mit NULLIF in beiden DBMS gleich.