代码之家  ›  专栏  ›  技术社区  ›  Thorsten

带空值的加法

  •  22
  • Thorsten  · 技术社区  · 15 年前

    以下是我目前正在使用的:

    SELECT column INTO anz_old FROM aTable Where <someKeyCondition>;
    IF anz_old IS NULL
    THEN
        anz_new := panzahl;
    ELSE
        anz_new := anz_new + NVL (panzahl, 0);
    END IF;
    UPATE aTabel set column = anz_new Where <someKeyCondition>;
    

    5 回复  |  直到 15 年前
        1
  •  72
  •   Community CDub    8 年前

    如果要添加a和b,并且其中一个可能为null,则可以使用coalesce,它返回传递给它的第一个非null参数:

    coalesce(a+b, a, b)
    

    因此,在这种情况下,如果两个参数都不为null,它将返回总和。如果只有b为空,它将跳过a+b并返回a。如果a为null,它将跳过a+b和a并返回b,只有当它们都为null时,b才为null。

    如果希望答案为0而不是null(如果a和b都为null),则可以将0作为最后一个参数传递:

    coalesce(a+b, a, b, 0)
    

    确实考虑 @erwins answer - null 可能不适合使用。

        2
  •  11
  •   j0k gauthamp    12 年前

    coalesce("Column1",0.00) + coalesce("Column2",0.00)
    

    我与前端高级管理人员合作。。。。他们不理解为什么NULL和0的处理方式不同。

    在我的例子中,它可以工作,只需将空值替换为0.00。。。但可能并非如此:)

        3
  •  11
  •   user734028    7 年前

    您还可以使用ISNULL,因此如果您有3个值

    isnull(val1,0)+isnull(val2,0)+isnull(val3,0)
    

        4
  •  9
  •   rjmunro    15 年前

        5
  •  0
  •   justasqluser    6 年前

    在SQL术语中,当添加数字时,NULL的结果意味着没有添加非NULL数字。

    当A为NULL,B为NULL时,则为NULL,否则为NULL(A,0)+ISNULL(B,0)结束