Den största skillnaden mellan de två är att IFNULL funktion tar två argument och returnerar det första om det inte är NULL eller den andra om den första är NULL .
COALESCE funktion kan ta två eller flera parametrar och returnerar den första icke-NULL-parametern, eller NULL om alla parametrar är null, till exempel:
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'
UPPDATERING: MSSQL utför strängare typ- och parameterkontroll. Dessutom har den inte IFNULL funktion utan istället ISNULL funktion, som behöver känna till typerna av argument. Därför:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Även COALESCE funktion i MSSQL kräver att minst en parameter är icke-null, därför:
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'