加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 加NULL值

发布时间:2020-12-12 16:17:25 所属栏目:MsSql教程 来源:网络整理
导读:在一个存储过程(在我的情况下是Oracle)中,我想向现有记录添加一些值.问题是现有值和要添加的值都可以为null.当两个操作数都为空时,我只希望结果为NULL.如果只有一个为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可能不是正确的使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读