Mysql
 sql >> Base de données >  >> RDS >> Mysql

Quelle est la différence entre ifnull et coalesce dans mysql ?

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'