如何在 Oracle 的更新查询中使用 if 语句
Posted
技术标签:
【中文标题】如何在 Oracle 的更新查询中使用 if 语句【英文标题】:how to use an if statement in update query in Oracle 【发布时间】:2019-11-07 18:10:20 【问题描述】:我想在 Oracle 更新中使用 if 语句。以下是我想要达到的条件,我将无法使用 PL/SQL。我想使用更新语句来实现以下结果。
if code like'0001' then
code ='0001'
elsif code like'01' then
code = 'ok'
else
code = 'NOTOK'
end
我尝试了以下更新语句,但不完全是我需要的,只是尝试使用案例进行简单更新..
UPDATE tblname
SET CODE = CASE
WHEN CODE not like '01% OR CODE not like '0001% THEN
'NOTOK'
END
【问题讨论】:
您要更新code
或desc
列吗? OK 逻辑上应该是desc
嗯,Barbaros 是对的,这很令人困惑。在您的伪代码中有code
、'001'
、'ok'
和'NOTOK'
,而在您的更新语句中有DESC
和'DIRECT'
。
感谢 Barbaros 和 Thorsten 调查,我已更正。
【参考方案1】:
您可以申请多个WHEN ... THEN
。第一场比赛获胜,所以它就像你的if / else if
一样工作。
UPDATE tblname
SET code = CASE WHEN code LIKE '0001%' THEN '0001'
WHEN code LIKE '01%' THEN 'ok'
ELSE 'NOTOK'
END;
【讨论】:
谢谢Thorsten,我刚刚找到并尝试过,它也有效。感谢您的支持。【参考方案2】:看来你想用
UPDATE tblname
SET "DESC" = CASE
WHEN SUBSTR(CODE,1,2)='01' THEN
'OK'
WHEN SUBSTR(CODE,1,4)='0001' THEN
SUBSTR(CODE,1,4)
ELSE
'NOT OK'
END
desc
是保留关键字。所以,列名不能不加引号。
【讨论】:
非常感谢巴巴罗斯。我努力寻找解决方案 2 小时..以上是关于如何在 Oracle 的更新查询中使用 if 语句的主要内容,如果未能解决你的问题,请参考以下文章