Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é a diferença entre ifnull e coalesce no mysql?


A principal diferença entre os dois é que IFNULL função recebe dois argumentos e retorna o primeiro se não for NULL ou o segundo se o primeiro for NULL .

COALESCE A função pode receber dois ou mais parâmetros e retornar o primeiro parâmetro não NULL, ou NULL se todos os parâmetros forem nulos, por exemplo:
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'

ATUALIZAÇÃO: O MSSQL faz uma verificação mais rigorosa de tipos e parâmetros. Além disso, não tem IFNULL função, mas em vez disso ISNULL função, que precisa conhecer os tipos dos argumentos. Portanto:
SELECT ISNULL(NULL, NULL);
-> results in an error

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

Também COALESCE função no MSSQL requer que pelo menos um parâmetro seja não nulo, portanto:
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'