学习ORALCE的时候,在做scott示例数据库练习的时候,计算工资和奖金合计查询的时候出现结果变成空了。
语句如下
SQL> select emp.ename , sal*13+emp.comm*12 AS "工资" from emp; ENAME 工资 ---------- ---------- SMITH ALLEN 24400 WARD 22250 JONES MARTIN 33050 BLAKE CLARK SCOTT KING TURNER 19500 ADAMS JAMES FORD MILLER 14 rows selected
?查了一下原因是:ORACLE中如果算数表达中有一个是NULL,整个结果就变成NULL了。解决办法用ORACLE的自带函数nvl()解决。
代码如下
SQL> select emp.ename , sal*13+ nvl( emp.comm*12,0) AS "工资" from emp; ENAME 工资 ---------- ---------- SMITH 10400 ALLEN 24400 WARD 22250 JONES 38675 MARTIN 33050 BLAKE 37050 CLARK 31850 SCOTT 39000 KING 65000 TURNER 19500 ADAMS 14300 JAMES 12350 FORD 39000 MILLER 16900
?