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'