Het belangrijkste verschil tussen de twee is dat IFNULL
functie heeft twee argumenten en retourneert de eerste als deze niet NULL
is of de tweede als de eerste NULL
is .
COALESCE
functie kan twee of meer parameters aannemen en retourneert de eerste niet-NULL parameter, of NULL
als alle parameters null zijn, bijvoorbeeld:
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'
UPDATE: MSSQL voert strengere type- en parametercontrole uit. Verder heeft het geen IFNULL
functie maar in plaats daarvan ISNULL
functie, die de typen argumenten moet kennen. Daarom:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Ook COALESCE
functie in MSSQL vereist dat ten minste één parameter niet-null is, daarom:
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'