Sql 如何在Oracle的更新查询中使用if语句

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

我想在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 =  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,我刚刚找到了,我试过了,它也成功了。谢谢你的支持。