11 Voto

MySQL: SELECT 0 en lugar de NULL

Pregunta de Invitado | 04/05/2021 a las 23:41

En una de mis consultas de MySQL, puede suceder de vez en cuando que en los resultados haya uno u otro valor NULL, porque la celda correspondiente aún no se ha agregado a la base de datos.

Para sin embargo ser capaz de procesar los valores en mi script PHP, me gustaría hacer que MySQL devuelva el número "0" en lugar de "NULL".

¿Existe alguna posibilidad en MySQL de determinar directamente en la consulta que se debe devolver "0" siempre que el resultado sea "NULL"?

ResponderPositivoNegativoFechaVotos
2Mejor Respuesta2 Votos

Puede usar la función COALESCE().

Aquí hay un pequeño ejemplo:

SELECT id, COALESCE(col, 0) FROM tab

En esta consulta, nos gustaría leer las columnas "id" y "col" de la tabla "tab". En el caso de que el valor proveniente de "col" sea "NULL", nos gustaría tener "0" en lugar de "NULL".

COALESCE() devuelve el primer valor que no es NULL de la fila de parámetros pasados. Por lo tanto, usar COALESCE(col, 1) devolvería "1" siempre que "col" sea NULL.

También puede utilizar esta función con varios parámetros. Por ejemplo, COALESCE(col1, col2, 0). Aquí, el resultado sería "col1" siempre que el valor de "col1" no sea NULL. Si "col1" es NULL, MySQL prueba el valor de "col2" y lo devuelve si no es NULL. Si ambos, "col1" y "col2" son NULL, MySQL recurre a 0.
05/05/2021 a las 23:59

ResponderPositivo Negativo
11 Voto

En lugar de COALESCE(), también puede usar la función IFNULL().

La construcción se puede utilizar de forma similar a COALESCE():

SELECT id, IFNULL(col, 0) FROM tab

Esto es: si el primer valor pasado a IFNULL es NULL (aquí el valor de "col"), tome el segundo valor (aquí 0).

Sin embargo, solo puede usar IFNULL() con 2 parámetros. Por lo tanto, su uso no es tan flexible como COALESCE().
07/05/2021 a las 08:45

ResponderPositivo Negativo
00 Votos

Otro pequeño consejo: en MySQL, se puede definir un valor DEFAULT para cada columna.

Quizás esto pueda ayudarte. Porque, si establece el valor DEFAULT de su columna en "0", este valor se escribe automáticamente en cada nueva celda cuando se agrega una nueva línea a la base de datos.

Por supuesto, esta sugerencia no se puede utilizar cuando se prueban valores de filas que no existen.
07/05/2021 a las 14:31

ResponderPositivo Negativo
00 Votos

Otra posibilidad es usar la condición IF de MySQL:

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

En esta condición IF, verificamos si "col" es NULL mediante "col IS NULL". Si es así, devolvemos la alternativa (aquí es 0); si no, devolvemos el contenido de "col".
07/05/2021 a las 18:35

ResponderPositivo Negativo
Responder

Temas Relacionados

PHP: Guardar Resultado de MySQL en Array

Información | 0 Comentarios

Firebird: SELECT con LIMIT

Pregunta | 1 Respuesta

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.