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'