22 Votos

MySQL: Comprobar si un Valor es NULL

Pregunta de Compi | 01/05/2021 a las 12:43

Me gustaría comprobar si un campo o el contenido de un campo de una columna es NULL con la ayuda de MySQL.

Para ello, he construido la siguiente consulta:

SELECT id, IFNULL(col, 0, col) FROM tab

Esta consulta debe leer el valor de la columna "col" en el caso de que "col" no sea NULL o 0 si es NULL.

Desafortunadamente, la consulta no funciona de esta manera. Siempre recibo el siguiente mensaje de error:

#1582 - Incorrect parameter count in the call to native function 'IFNULL'

¿Alguien puede decirme cómo reescribir esta consulta de base de datos para que funcione correctamente? Hasta donde yo sé, el IF normal espera 3 parámetros, entonces, ¿qué estoy haciendo mal aquí?

ResponderPositivoNegativo
2Mejor Respuesta2 Votos

Hay dos posibilidades que puede utilizar para cambiar su consulta.

Puede escribir

SELECT id, IF(col IS NULL, 0, col) FROM tab

o puede cambiar su consulta a:

SELECT id, IFNULL(col, 0) FROM tab

La primera consulta usa el IF normal de MySQL. Como primer parámetro, especifica "col IS NULL", con el que verifica si "col" es NULL. En consecuencia, como segundo y tercer parámetro, puede especificar qué se debe devolver según la condición. Es decir 0 si la condición es VERDADERA ("col" es NULL) o el contenido de "col" en el caso de que la condición sea FALSE ("col" no es NULL).

El segundo ejemplo muestra cómo utilizar IFNULL correctamente. IFNULL espera dos parámetros: Primero, el valor a verificar (en su caso, el contenido de "col") y como segundo parámetro, el valor que debe devolverse si el primer parámetro es NULL. De lo contrario, se devuelve el primer parámetro.

Por supuesto, la primera forma siempre tiene una ventaja cuando no desea simplemente leer el contenido de la columna correspondiente, por ejemplo, si desea devolver algún contenido alternativo o si desea modificar el contenido original de la columna.
01/05/2021 a las 18:33

ResponderPositivo Negativo
Responder

Temas Relacionados

MySQL: SELECT 0 en lugar de NULL

Pregunta | 4 Respuestas

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.