¿Cuál es el equivalente de la función NVL de Oracle en MySQL?

Cuando estamos realizando consultas contra una base de datos, en nuestro SELECT es posible que estemos usando campos que puedan ser iguales a NULL y que pueden afear nuestras salidas o directamente, crearnos problemas en nuestros desarrollos (por ejemplo porque tratemos de forma lógica lo mismo la cadena vacía y el NULL).

Para resolver estas cuestiones, en Oracle existe la función NVL(elemento, reemplazo) que básicamente hace lo siguiente: si el elemento es igual a NULL, en la salida saca la cadena "reemplazo".

En MySQL la función tiene otro nombre: IFNULL y su referencia en MySQL es la siguiente:

IFNULL(expr1,expr2)

Si expr1 no es NULLIFNULL() retorna expr1, de otro modo retorna expr2IFNULL() retorna un valor numérico o de cadena de caracteres, en función del contexto en que se usa.

mysql> SELECT IFNULL(1,0);
        -> 1
mysql> SELECT IFNULL(NULL,10);
        -> 10
mysql> SELECT IFNULL(1/0,10);
        -> 10
mysql> SELECT IFNULL(1/0,'yes');
        -> 'yes'

Un ejemplo que acabo de usar, imaginad una tabla llamada "equipos" con un campo de nombre "comentarios" que en ocasiones es NULL y queremos que aparezca al mostrar el informe como "Vacío" en esos casos en lugar de como "(NULL)", sólo tendríamos que hacer lo siguiente:

SELECT IFNULL(comentarios, "Vacío")
FROM equipos

Author Description

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

  • Pingback: Bitacoras.com()

  • dgmvecuador

    GRACIAS, ES MUY ÚTIL!!!!

  • The Brain

    Gracias!