¿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

Casi Ingeniero Informático, co-fundador y administrador de Linux Hispano, además de desarrollar software y mantener sistemas en el CSIC, hace poco he fundado junto con Alberto Hornero una start-up: CODECTION donde trabajamos con software libre. Puedes saber más sobre mí, mi vida laboral, mis libros, mis artículos y mi día a día en @fjcarazo y en mi perfil público de LinkedIn.

  • Pingback: Bitacoras.com

  • dgmvecuador

    GRACIAS, ES MUY ÚTIL!!!!

  • The Brain

    Gracias!