转至:http://www.th7.cn/db/Oracle/201501/86125.shtml
oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值
oracle 函数介绍之nvl
函数声明:nvl(col,val)
说明:当col为空时取val作为返回值,当col不为空时取col值。
用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于
null,所以在表达式中对可能为空的值要使用nvl由于null!=null,有时对可能为空的列进行条件查询时,可能出现结果集丢失数据问题,加上
nvl就不会了。
经典用法:
通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值例如:select nvl(sum(t.字段),1) from table t就表示如果sum(t.字段) = NULL 就返回 1另一个有关的有用方法declare i integerselect nvl(sum(t.字段),1) into i from table t这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1orcale
中:select nvl(rulescore,0) from zwjc_graderule where
rulecode='FWTD'; 如果记录中不存在rulecode ='FWTD'的数据.则查不出数据.select
nvl(rulescore,0) into rule_score from zwjc_graderule where
rulecode='FWTD';会报查不到数据的错select nvl(sum(rulescore),0) from zwjc_graderule where rulecode='FWTD'; 如果记录中不存在rulecode ='FWTD'的数据.还是可以得到一行列名为nvl(rulescore,0),值为0的数据.select nvl(sum(rulescore),0) into rule_score from zwjc_graderule where rulecode='FWTD'; 不会报错
oracle 函数介绍之nvl2
Oracle在NVL函数的功能上扩展ÿ