如何在求和中使用Null

时间:2011-04-27 15:29:13

标签: oracle plsql

我正在进行tot := tot + v_row.SAVINGS;,其中tot初始化为0,v_row.SAVINGS初始化为null

现在我使用nvl function0获取值null而不是v_row.Savings,因为我需要0求和,如果有空但是当我返回时v_row,如果求和值显示为0,那么我需要返回nullblank space值,我该怎么办呢。

注意:我将此用于报告目的,因此如果summation的值为零,那么我应该在报告中显示null或空格。

2 个答案:

答案 0 :(得分:3)

NULLIF(expr1, expr2)在逻辑上等同于

CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END

NVL(expr1, expr2)

tot 可能为NULL, v_row.SAVINGS 可能为NULL。

  • 使用NVL确保添加号码
  • 如果总和为NULL,则使用NULLIF返回NULL

在你返回之前将tot强制转换为NULL可能更合适。

示例:

tot := NULLIF(NVL(tot, 0) + NVL(v_row.SAVINGS, 0), 0)

答案 1 :(得分:0)

这应该有效:

tot := case when tot + v_row.SAVINGS = 0 then null else tot + v_row.SAVINGS end;