Está en la página 1de 6

FUNCIONES NULAS

Hasta ahora, solo tuvimos aplicado una línea simple de código con una función en declaraciones
simples. Sin embargo es posible el anidado de funciones difíciles. Es importante conocer como son
evaluadas estas funciones anidadas. El siguiente ejemplo es una función anidada. El proceso de
evaluación de la función empieza desde el nivel interior hasta el exterior.

SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6), 'VIERNES'), 'fmDay, Month DDth, YYYY')


AS "Next Evaluation"

FROM employees

WHERE employee_id=100

Paso 1. La fecha de contratación será añadida seis meses a este.

Paso 2. El primer viernes del siguiente día serán identificados.

Paso 3. El formato de fecha predeterminado será el formato que se leerá y se mostrará en pantalla
el viernes en un formato similar a: Viernes, 18 de diciembre, 1987, y deberá aparecer en el salida
bajo la columna de “Próxima evaluación”.

Funciones relacionadas a un valor nulo

Al inicio del curso, el término nulo fue introducido. Si ustedes recuerdan el valor de este término
no evaluado, desconocido, no asignado o inaplicado. Nosotros no podemos buscar estos términos
para saber si es el mismo u otro valor, porque no sabes qué valor tiene este término. Estas
funciones no son iguales a nada, ni siquiera a cero, pero aunque estas no sean iguales a nada no
dejan de ser importantes. Imaginemos esta pregunta: es verdad qué x=y?. Para saber la respuesta
tendríamos que conocer los valores de x y y. Oracle tiene 4 funciones generales para resolver estas
funciones pertenecientes al uso de valores nulos. Estas son:

NVL

NVL2
NULLIF

COALESCE

FUNCION NVL

La función NVL convierte a un valor nulo en un valor conocido de un tipo de dato fijo, alguna
fecha, carácter o número. Los tipos de datos de la columna valor nulo y del nuevo tipo de dato
debe ser el mismo. La función NVL es:

NVL (valor o columna que contiene el nulo, valor a reemplazar el nulo)

La siguiente consulta utiliza la función NVL con datos de tipo carácter:

SELECT NVL(comments, 'no comment')


FROM D_PLAY_LIST_ITEMS;

Los tipos de datos de la columna de valores nulos y la de nuevos valores muestran lo mismo que
esta explicado en el siguiente ejemplo:

NVL(auth_expense_amt,0)

NVL(hire_date,’01-JAN-97’)

NVL(speciality, ‘None Yet’)

SELECT COMMISSION_PCT AS COMISIONES, NVL(COMMISSION_PCT,8) AS NULOS

FROM EMPLOYEES
Nosotros podemos utilizar las funciones NVL para convertir columnas que contienen valores nulos
a números antes de hacer cálculos. Cuando un cálculo aritmético es interpretado como nulo, el
resultado es nulo. La función NVL puede convertir el valor nulo a un número antes del cálculo
aritmético evitando el resultado nulo.

En el ejemplo, la columna de autentico_gasto_amt en la tabla D_SOCIOS contiene valores nulos.


La función NVL es usada para cambiar el valor nulo a cero antes del cálculo aritmético.

SELECT first_name, last_name,NVL(auth_expense_amt, 0) * 1.05 AS


Expenses
FROM D_Partners;

FUNCIONES NVL2

Las funciones NVL2 se evalúan con una expresión de 3 valores. El primer valor es no nulo, cuando
la función NVL2 devuelve la segunda expresión. El primer valor es nulo cuando devuelve la tercera
expresión. El primer valor también puede tener algún tipo de dato. La expresión 2 y 3 pueden
tener cualquier valor excepto LONG.

El tipo de dato del valor de retorno es siempre el mismo tipo de dato de la expresión 2, a menos
que el dato de la expresión 2 sea un carácter, en tal caso el valor de retorno será VARCHAR2.

La función NVL es:


NVL2(expresión 1 este valor puede ser nulo, expresión 2 es el valor de retorno si la expresión 1 no
es nulo, expresión 3 valor a remplazar si la expresión 1 es nula)

Un camino fácil para recordar la función NVL2 es repasando “si la expresión 1 tiene un valor, se
sustituye la expresión 2; si la expresión 1 es nula, se substituye la expresión 3”.

La función NVL2 muestra un dato número para la expresión 1 y un dato carácter para las
expresiones 2 y 3.

SELECT last_name, salary

NVL2 (commission_pct, salary +(salary*commission_pct), salary) as income

From employees;
FUNCIÓN NULLIF

La función NULLIF compara dos funciones. Si estas son iguales, la función retorna nulo. Si estas no
son iguales, la función retorna la primera expresión.

La función NULLIF es:

NULLIF(expresión 1, expresión 2)

SELECT first_name, LENGTH(first_name) "Length FN", last_name, LENGTH(last_name) "Length LN",

NULLIF(LENGTH(first_name), LENGTH(last_name)) AS "Compare Them"

FROM D_PARTNERS;
FUNCIÓN COALESCE

La función COALESCE es una extensión de la función NVL, excepto que COALESCE puede tomar
múltiples valores. La palabra COALESCE significa “TRABAJAR JUNTOS” y esto significa lo que
sucede.

Si la primera expresión es nula, la función continúa bajando la línea hasta que una función no nula
este funcionando. De acuerdo, si la primera expresión tiene un valor, la función retorna la primera
expresión y la parada de la función.

La función COALESCE es:

COALESCE (expresión 1, expresión 2, …. Expresión n)

Al examinar la expresión SELECT de la tabla empleados mostramos lo correcto. ¿Qué empleados


no reciben comisión?, ¿cómo se llaman?, ¿está aquí alguno que no recibe ningún porcentaje de
comisión ni un salario?
SELECT last_name, COALESCE(Commission_pct, salary,10) comm.
From employees
Order by commission_pct;

También podría gustarte