sql – 加NULL值

前端之家收集整理的这篇文章主要介绍了sql – 加NULL值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在一个存储过程(在我的情况下是Oracle)中,我想向现有记录添加一些值.问题是现有值和要添加的值都可以为null.当两个操作数都为空时,我只希望结果为NULL.如果只有一个为null,我希望结果是另一个操作数.如果两者均为非空值,则我希望结果为“正常”.

这是我到目前为止使用的

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>;

有没有更优雅的方式(在sql中完全是完全的,即只是在一个更短的语句中缺少一个长的CASE-Statement,基本上与上面的代码相同)

解决方法

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

所以在这种情况下,如果两个参数都不为null,它将返回总和.如果只有b为null,它将跳过b并返回a.如果a为空,则将跳过b和a并返回b,如果它们都为空,则只能为null.

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

coalesce(a+b,b,0)

考虑@erwins answer – null可能不是正确的使用.

猜你在找的MsSQL相关文章