巧用空值判断函数nvl()

本文介绍了一种在报表设计中高效处理空值的方法,通过使用nvl()函数替代if条件语句来提升性能。该方法避免了复杂表达式的重复计算,有效提高了报表单元格值的计算速度。

在设计企业报表时,报表单元格的表达式中经常需要用到空值判断,例如在单元格的显示值属性中,判断当单元格的值为空时,显示为0,否则显示单元格的真实值,等等。一般这种情况下,用户习惯写的表达式是: if(value()==null, 0, value())。

 

如果我们把value()换成更加复杂的表达式,例如if(ds1.select1(…)==null, 0, ds1.select1(…)),大家可以看出,这种算法明显很慢,需要把ds1.select1(…)这样的复杂表达式运算两次,而如果采用nvl()则可以避免这个问题。

 

单元格函数:nvl()

函数说明:
根据第一个表达式的值是否为空,若为空则返回指定值

语法:
nvl( valueExp1, valueExp2 )

参数说明:
valueExp1–需要计算的表达式,其结果不为空时返回其值
valueExp2–需要计算的表达式,当valueExp1结果为空时返回此值

返回值:
valueExp1或valueExp2的结果值

示例:
例1:nvl(A1,””) 表示当A1为空时,返回空串,否则返回A1

例2:nvl(value(),0) 表示当当前格为空时返回0,否则返回当前格的值

 

 

应用举例:

正确写法,速度快错误写法,速度慢
nvl(ds1.select1(…), 0)if(ds1.select1(…)==null, 0, ds1.select1(…))
nvl(a1[……]{……}, “–”)if(a1[……]{……}==null, “–”, a1[……]{……})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值