Digamos que eu tenha uma função simples no MySQL:
SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
Se nenhuma entrada em Column_
2 contiver o texto 'Test', essa função retornará NULL
, enquanto eu gostaria que retornasse 0.
Estou ciente de que uma pergunta semelhante foi feita algumas vezes aqui, mas não consegui adaptar as respostas aos meus propósitos, por isso ficaria grato por alguma ajuda para resolver isso.
Respostas:
Use
COALESCE
para evitar esse resultado.Para vê-lo em ação, consulte este violino sql: http://www.sqlfiddle.com/#!2/d1542/3/0
Mais Informações:
Dadas três tabelas (uma com todos os números, uma com todos os nulos e outra com uma mistura):
SQL Fiddle
Configuração do Esquema do MySQL 5.5.32 :
Consulta 1 :
Resultados :
fonte
SUM
funciona como desejadoAVG
eCOUNT
pode produzir resultados diferentes ao receberNULL
Solicitando o uso,COALESCE
conforme sugerido pelo @DarkSide, dependendo do resultado desejado.Use
IFNULL
ouCOALESCE
:A diferença entre eles é que
IFNULL
é uma extensão do MySQL que recebe dois argumentos eCOALESCE
é uma função SQL padrão que pode receber um ou mais argumentos. Quando você tem apenas dois argumentos, o usoIFNULL
é um pouco mais rápido, embora aqui a diferença seja insignificante, pois é chamada apenas uma vez.fonte
IFNULL
ouCOALESCE
?? você poderia explicar isso?coalesce
.Não é possível obter exatamente o que você está perguntando, mas se você estiver usando uma função SUM agregada, o que implica que você está agrupando a tabela.
A consulta vale para MYSQL assim
fonte