La principale différence entre les deux est que IFNULL
la fonction prend deux arguments et renvoie le premier si ce n'est pas NULL
ou le second si le premier est NULL
.
COALESCE
la fonction peut prendre deux paramètres ou plus et renvoie le premier paramètre non NULL, ou NULL
si tous les paramètres sont nuls, par exemple :
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'
MISE À JOUR : MSSQL effectue une vérification plus stricte des types et des paramètres. De plus, il n'a pas IFNULL
fonction mais à la place ISNULL
fonction, qui doit connaître les types des arguments. Par conséquent :
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Aussi COALESCE
La fonction dans MSSQL nécessite qu'au moins un paramètre soit non nul, donc :
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'