繁体   English   中英

Oracle SQL更新查询仅更新值为空的值

[英]Oracle SQL update query only update values if they are null

我有以下查询,仅在它们为空时才在其中更新值。

是否可以将所有这些都放入单个查询中?

UPDATE test
SET test1 = 'hello'
WHERE test1 IS NULL

UPDATE test
SET test2 = 'world'
WHERE test2 IS NULL

您可以尝试:

UPDATE test
   SET test1 = NVL(test1, 'hello'),
       test2 = NVL(test2, 'world')
 WHERE test2 IS NULL
    OR test1 IS NULL;

尽管它可能会触发更新触发器,即使对于实际上未更改的行也是如此。

UPDATE test
   SET test1 = COALESCE(test1, 'hello')
     , test2 = COALESCE(test2, 'hello')
 WHERE test1 IS NULL OR test2 IS NULL

在这种情况下,COALESCE()与NVL()的工作原理相似-返回第一个非空值。

UPDATE test
SET Test1 = COALESCE(test1, 'hello'),
    Test2 = COALESCE(test2, 'world')
WHERE test1 IS NULL OR
      test2 IS NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM