oracle的函数nvl
在2009-04-25,程序上线的过程中,出了一点小问题,是个后台统计报表的
使用存储过程从业务日志表里抽取数据插入统计数据表,页面将数据显示出来
在测试环境是好的,本机和生产环境是坏的
找了一阵子原因,发现时空指针异常,原来数据中的有一个值是空的
但是测试数据库中是0,生产的是null
使用sql统计的时候使用的是sum函数,统计没有的情况就是null
所以在程序中加上了对null的判断,解决问题
后来与同事交流,他指导了一下,使用oracle的nvl函数可以解决,所以又修改了存储过程,搞定。
select sum(num) from sms
select nvl((select sum(num) from sms),0) from dual
第二个sql的含义是如果sum的值为null,用0代替
在2009-04-25,程序上线的过程中,出了一点小问题,是个后台统计报表的
使用存储过程从业务日志表里抽取数据插入统计数据表,页面将数据显示出来
在测试环境是好的,本机和生产环境是坏的
找了一阵子原因,发现时空指针异常,原来数据中的有一个值是空的
但是测试数据库中是0,生产的是null
使用sql统计的时候使用的是sum函数,统计没有的情况就是null
所以在程序中加上了对null的判断,解决问题
后来与同事交流,他指导了一下,使用oracle的nvl函数可以解决,所以又修改了存储过程,搞定。
select sum(num) from sms
select nvl((select sum(num) from sms),0) from dual
第二个sql的含义是如果sum的值为null,用0代替