Sql 如何在Oracle的更新查询中使用if语句
我想在Oracle update中使用if语句。下面是我想要达到的条件,我将无法使用PL/SQL。我希望使用update语句实现以下结果Sql 如何在Oracle的更新查询中使用if语句,sql,oracle,sql-update,Sql,Oracle,Sql Update,我想在Oracle update中使用if语句。下面是我想要达到的条件,我将无法使用PL/SQL。我希望使用update语句实现以下结果 if code like'0001' then code ='0001' elsif code like'01' then code = 'ok' else code = 'NOTOK' end 我尝试了下面的update语句,并不是我所需要的,只是尝试了一个简单的更新用例 UPDATE tblname SET CODE = CAS
if code like'0001' then
code ='0001'
elsif code like'01' then
code = 'ok'
else
code = 'NOTOK'
end
我尝试了下面的update语句,并不是我所需要的,只是尝试了一个简单的更新用例
UPDATE tblname
SET CODE = CASE
WHEN CODE not like '01% OR CODE not like '0001% THEN
'NOTOK'
END
当。。。然后。第一场比赛获胜,因此它的工作原理与您的
if/else if
一样
UPDATE tblname
SET code = CASE WHEN code LIKE '0001%' THEN '0001'
WHEN code LIKE '01%' THEN 'ok'
ELSE 'NOTOK'
END;
当。。。然后。第一场比赛获胜,因此它的工作原理与您的
if/else if
一样
UPDATE tblname
SET code = CASE WHEN code LIKE '0001%' THEN '0001'
WHEN code LIKE '01%' THEN 'ok'
ELSE 'NOTOK'
END;
看来你想用
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
是保留关键字。因此,列名不能没有引号。似乎您要使用
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
是保留关键字。因此,不能有未引用的列名。您是要更新code
还是desc
列?好的,逻辑上应该是desc
嗯,Barbaros是对的,这很令人困惑。在你的伪代码中有code
,'001'
,'ok'
和'NOTOK'
,而在你的更新语句中有DESC
和'DIRECT'
。感谢Barbaros和Thorsten的研究,我已经更正了。你是想更新code
还是DESC
列?好的,逻辑上应该是desc
嗯,Barbaros是对的,这很令人困惑。在你的伪代码中有code
,'001'
,'ok'
,和'NOTOK'
,在你的更新语句中有DESC
和'DIRECT'
。感谢Barbaros和Thorsten的研究,我已经更正了。非常感谢Barbaros。我花了两个小时努力寻找解决方案。非常感谢你,巴巴拉斯。我花了两个小时努力寻找解决方案。谢谢Thorsten,我刚刚找到了,我试过了,它也成功了。谢谢你的支持。谢谢Thorsten,我刚刚找到了,我试过了,它也成功了。谢谢你的支持。