sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la diferencia entre ifnull y coalesce en mysql?

La principal diferencia entre los dos es que IFNULL la función toma dos argumentos y devuelve el primero si no es NULL o el segundo si el primero es NULL .

COALESCE La función puede tomar dos o más parámetros y devuelve el primer parámetro no NULL, o NULL si todos los parámetros son nulos, por ejemplo:

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'

ACTUALIZACIÓN: MSSQL hace una verificación más estricta de tipos y parámetros. Además, no tiene IFNULL función pero en su lugar ISNULL función, que necesita saber los tipos de los argumentos. Por lo tanto:

SELECT ISNULL(NULL, NULL);
-> results in an error

SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL

También COALESCE la función en MSSQL requiere que al menos un parámetro no sea nulo, por lo tanto:

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'