Digamos que tengo una función simple en MySQL:
SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'
Si ninguna entrada en Column_
2 contiene el texto 'Prueba', esta función regresa NULL
, mientras que me gustaría que devuelva 0.
Soy consciente de que se ha formulado una pregunta similar varias veces aquí, pero no he podido adaptar las respuestas a mis propósitos, por lo que agradecería un poco de ayuda para solucionarlo.
Respuestas:
Use
COALESCE
para evitar ese resultado.Para verlo en acción, consulte este violín de sql: http://www.sqlfiddle.com/#!2/d1542/3/0
Más información:
Dadas tres tablas (una con todos los números, una con todos los valores nulos y otra con una mezcla):
Violín de SQL
Configuración del esquema MySQL 5.5.32 :
Consulta 1 :
Resultados :
fuente
SUM
funciona según lo deseado,AVG
yCOUNT
puede producir resultados diferentes cuandoNULL
lo recibe, solicitándole que lo useCOALESCE
según lo sugerido por @DarkSide, dependiendo de su resultado deseado.Usar
IFNULL
oCOALESCE
:La diferencia entre ellos es que
IFNULL
es una extensión MySQL que toma dos argumentos, yCOALESCE
es una función SQL estándar que puede tomar uno o más argumentos. Cuando solo tiene dos argumentos, el usoIFNULL
es ligeramente más rápido, aunque aquí la diferencia es insignificante ya que solo se llama una vez.fuente
IFNULL
oCOALESCE
?? ¿podrías explicarlo?coalesce
.No se puede obtener exactamente lo que está pidiendo, pero si está utilizando una función SUMA agregada que implica que está agrupando la tabla.
La consulta va para MYSQL como este
fuente