¿Recuerdas que era el valor NULL
? Cualquier columna de una tabla podía contener un valor nulo independientemente al tipo de datos que tuviera definido. Eso sí, esto no era así en los casos en que definíamos esa columna como no nula (NOT NULL
), o que fuera clave primaria (PRIMARY KEY
).
Cualquier operación que se haga con un valor NULL
devuelve un NULL
. Por ejemplo, si se intenta dividir por NULL
, no nos aparecerá ningún error sino que como resultado obtendremos un NULL
(no se producirá ningún error tal y como puede suceder si intentáramos dividir por cero).
También es posible que el resultado de una función nos de un valor nulo.
Por tanto, es habitual encontrarnos con estos valores y es entonces cuando aparece la necesidad de poder hacer algo con ellos. Las funciones con nulos nos permitirán hacer algo en caso de que aparezca un valor nulo.
NVL(valor, expr1)
Si valor es
NULL
, entonces devuelveexpr1
. Ten en cuenta queexpr1
debe ser del mismo tipo que valor.
¿Y no habrá alguna función que nos permita evaluar expresiones? La respuesta es afirmativa y esa función se llama DECODE.
DECODE(expr1, cond1, valor1 [, cond2, valor2, ...], default )
Esta función evalúa una expresión
expr1
, si se cumple la primera condición (cond1
) devuelve elvalor1
, en caso contrario evalúa la siguiente condición y así hasta que una de las condiciones se cumpla. Si no se cumple ninguna condición se devuelve el valor por defecto que hemos llamado default.
Por ejemplo, si en la tabla USUARIOS
queremos un listado de sus correos, podemos pedir que cuando un correo esté a nulo, es decir, no tenga valor, aparezca el texto No tiene correo.
SELECT NVL(correo, 'No tiene correo') FROM USUARIOS;