Tratamento de valores nulos |
Existe alguma polémica sobre a utilização de valores nulos nos campos de uma base de dados. Uma corrente de opinião é favoravel à sua utilização enquanto outra não o é. Um valor nulo significa:
A utilização de nulos cria os seguintes problemas:
O query abaixo pretende determinar o salário anual de cada empregado:
select ename, sal*14+comm "Salário Anual", job from emp; |
ENAME Salário Anual JOB ---------- ------------- --------- SMITH CLERK ALLEN 22700 SALESMAN WARD 18000 SALESMAN JONES MANAGER MARTIN 18900 SALESMAN BLAKE MANAGER CLARK MANAGER SCOTT ANALYST KING PRESIDENT TURNER 21000 SALESMAN ADAMS CLERK JAMES CLERK FORD ANALYST MILLER CLERK 14 rows selected. |
Os empregados que não são vendedores têm valor nulo na comissão e por isso o resultado da expressão é nulo. Para obter um resultado é necessário converter os nulos em zero. Para isso podemos usar a função NVL().
NVL tem dois argumentos:
Ex1: NVL(datecolumn,'01-Jan-97') => se datecolumn for nulo substitui por '01-Jan-1997'.
Ex2: NVL(UnidadesEmStock,0) => se UnidadesEmStock for nulo substitui por '0'.
O calculo do salário anual incluindo as comissões pode ser feito desta forma:
select ename, sal*14+NVL(comm,0) "Salário Anual", job from emp; |
ENAME Salário Anual JOB ---------- ------------- --------- SMITH 11200 CLERK ALLEN 22700 SALESMAN WARD 18000 SALESMAN JONES 41650 MANAGER MARTIN 18900 SALESMAN BLAKE 39900 MANAGER CLARK 34300 MANAGER SCOTT 42000 ANALYST KING 70000 PRESIDENT TURNER 21000 SALESMAN ADAMS 15400 CLERK JAMES 13300 CLERK FORD 42000 ANALYST MILLER 18200 CLERK 14 rows selected. |
Realizado por Turtle Learning ®. Última alteração em 2011-02-26