Główna różnica między nimi polega na tym, że IFNULL funkcja przyjmuje dwa argumenty i zwraca pierwszy, jeśli nie jest NULL lub drugi, jeśli pierwszy to NULL .
COALESCE funkcja może przyjmować dwa lub więcej parametrów i zwraca pierwszy parametr inny niż NULL lub NULL jeśli wszystkie parametry są puste, na przykład:
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'
AKTUALIZACJA: MSSQL ma bardziej rygorystyczne sprawdzanie typu i parametrów. Co więcej, nie ma IFNULL funkcja, ale zamiast tego ISNULL funkcja, która musi znać typy argumentów. Dlatego:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Również COALESCE funkcja w MSSQL wymaga, aby co najmniej jeden parametr był inny niż null, dlatego:
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'