学习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