как использовать оператор if в запросе на обновление в Oracle - PullRequest
0 голосов
/ 07 ноября 2019

Я хотел использовать оператор if в обновлении Oracle. Ниже приведено условие, которого я хотел достичь, и я не смогу использовать PL / SQL. Я хотел достичь приведенного ниже результата с помощью оператора update.

if code like'0001'  then
   code ='0001'
elsif code like'01' then 
   code = 'ok'
else 
   code = 'NOTOK'
end

Я попробовал приведенный ниже оператор обновления не совсем так, как мне нужно, а просто попробовал простое обновление, используя case ..

UPDATE tblname
SET CODE =  CASE
              WHEN CODE not like '01% OR CODE not like '0001% THEN
                'NOTOK'
            END

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Вы можете применить несколько 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;
0 голосов
/ 07 ноября 2019

Кажется, вы хотите использовать

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 - зарезервированное ключевое слово. Таким образом, имя столбца не может быть заключено в кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...