表达式中,经常需要用到空值判断,例如在单元格的显示值属性中,判断当单元格的值
为空时,显示为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(…))
![润乾报表分析3-巧用空值判断nvl 润乾报表分析3-巧用空值判断nvl](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuaXRkYWFuLmNvbS9pbWdzLzEvMy8zLzIvMzAvYTQxOTU0YTI3ZDZhZDk2ZmEyYzJjZjgxNmU2Nzc0NDguanBl.jpe?w=700&webp=1)
√ nvl(a1[……]
...
{……}
, “
--
”) Х
if
(a1[……]
...
{……}
==
null
, “
--
”, a1[……]
...
{……}
)
……. ……….