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'