表达式中,经常需要用到空值判断,例如在单元格的显示值属性中,判断当单元格的值为空时,显示为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[……] ... {……} )……. ……….