Der Hauptunterschied zwischen den beiden ist, dass IFNULL
Die Funktion nimmt zwei Argumente und gibt das erste zurück, wenn es nicht NULL
ist oder die zweite, wenn die erste NULL
ist .
COALESCE
Die Funktion kann zwei oder mehr Parameter annehmen und gibt den ersten Nicht-NULL-Parameter oder NULL
zurück wenn alle Parameter null sind, zum Beispiel:
SELECT IFNULL('some value', 'some other value');
-> returns 'some value'
SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'
SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function
SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'
AKTUALISIERUNG: MSSQL führt eine strengere Typ- und Parameterprüfung durch. Außerdem hat es kein IFNULL
Funktion, sondern ISNULL
-Funktion, die die Typen der Argumente kennen muss. Deshalb:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Auch COALESCE
Funktion in MSSQL erfordert, dass mindestens ein Parameter ungleich Null ist, daher:
SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
-> results in an error
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'