if-statement - 根据条件 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:: 列值不一样。
解决方案
您的查询几乎接近。下面应该可以工作,
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
推荐阅读
- browser - 如何在没有 cookie 的情况下打开多个 Web 浏览器窗口?
- javascript - 如何在中间对齐 DocumentFragment?
- python - 如何修复 Tkinter 中的 entry.get() 函数?
- powershell - Powershell通过保持文件夹结构(文件夹+子文件夹)从文件夹路径压缩超过X天的文件,并排除一些子文件夹
- javascript - Html 模板标签:防止变成
- clojure - Leiningen 无法正常工作 MacOs Mojave 原因是:java.io.FileNotFoundException:无法找到 clojure/tools/nrepl/server__init.class
- c# - 实体框架和mysql
- javascript - mongoose/mongodb 处理垃圾邮件喜欢/不喜欢按钮和更新
- python - 为什么 PyDev 7.5 会错误地检测到使用 typing.overload 的重复签名?
- go - 将数据转换为镶木地板