首页 > 解决方案 > 根据条件 PL/SQL 更新列,将它们设置为 NULL

问题描述

我想根据条件更新列:此表包含 A、B、C、D、E 列。

桌子

这些具有值的列将被更新为 null。我不想触摸没有任何值的列

...

UPDATE
    Table
SET 
  A = CASE WHEN A!=NULL THEN A=NULL
  B= CASE WHEN B!=NULL THEN B=NULL 
  C= CASE WHEN C!=NULL THEN C='U'
  D= CASE WHEN D!=NULL THEN D=NULL ELSE END,
WHERE
    where condition;

...

PS:: 列值不一样。

标签: if-statementplsqlnullsql-updatecase

解决方案


您的查询几乎接近。下面应该可以工作,

  update test_Data 
     set  A = CASE WHEN A is not NULL THEN NULL END,
       B = CASE WHEN B is not NULL THEN NULL END ,
       C = CASE WHEN C is not  NULL THEN NULL END,
       D = CASE WHEN D is not   NULL THEN NULL END,
       E = CASE WHEN E = 'abc' THEN 'QWE' ELSE E END
     where (A is not NULL or B is not NULL or C is not NULL or D is not null or E is not null)

更新:

如果任何列具有 NOT NULL 约束,则必须将列更改为 NULL。

alter table test_Data modify E null;

有关示例的演示,请参阅 DB fiddle 链接 - https://dbfiddle.uk/?rdbms=oracle_18&fiddle=7f8bfc2f5edda71a9eb5af5ccb2065de


推荐阅读