SQL Academy
Premium
Funktionsreferenz

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');
NULLIF('SQL Academy', 'SQL Academy')
<NULL>

Verschiedene Werte ergeben den ersten

MySQL 8.1
SELECT NULLIF('SQL', 'Academy');
NULLIF('SQL', 'Academy')
SQL

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;
filledwith_code
297177

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;
session_idpages_viewedduration_secpages_per_minute
s_000015100<NULL>
s_000071169106.7
s_000134110<NULL>
s_00016340<NULL>
s_0002053199.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.

Siehe auch

Wo du es lernst