日期:2014-05-16  浏览次数:20515 次

ORACL计算表达式结果莫名变成NULL

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

?