Den største forskel mellem de to er, at IFNULL
funktion tager to argumenter og returnerer det første, hvis det ikke er NULL
eller den anden, hvis den første er NULL
.
COALESCE
funktion kan tage to eller flere parametre og returnerer den første ikke-NULL parameter eller NULL
hvis alle parametre er null, for eksempel:
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'
OPDATERING: MSSQL udfører strengere type- og parameterkontrol. Desuden har den ikke IFNULL
funktion, men i stedet ISNULL
funktion, som skal kende typerne af argumenterne. Derfor:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Også COALESCE
funktion i MSSQL kræver, at mindst én parameter er ikke-nul, derfor:
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'