Остальное является частью оператора Case When, игнорируемого в PL / SQL? - PullRequest
0 голосов
/ 24 мая 2018

Почему не работает другая часть, я не понимаю.Обычно он должен возвращать обратный номер, если не указан регистр.

Вот мой код;

select Id,
       case 
         when mod(Id,10)<(Id/10) 
           then (cast((Id/10) as number(5))*10)+(mod(Id,10)) 
         else 
           mod(Id,10)*10+(Id/10)  
       end Col
from digits

Sample Data

Пример данных;

CREATE TABLE Test
(
    Id INT
);

insert into test
select 21 from dual
UNION ALL
select 12 from dual
UNION ALL
select 34 from dual
UNION ALL
select 43 from dual
UNION ALL
select 29 from dual
UNION ALL
select 92 from dual;

Заранее спасибо ..

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

@ aprkturk вы упомянули T-SQL;Вот ответ Флорина в переводе:

select  
   Id,
   case 
     when Id % 10 < Id / 10
       then Id / 10 * 10 + Id % 10  -- this is the number itself, Id
     else 
       Id % 10 * 10 + Id / 10       -- reverse :)
   end Col
from @i
order by Id

Для чего это нужно?Кажется странным, что хочется делать ...

0 голосов
/ 24 мая 2018

Для обращения целых чисел с двумя цифрами case должно выглядеть следующим образом (обратите внимание на функцию trunc):

select  
   Id,
   case 
     when mod(Id,10)<(Id/10) 
       then trunc(Id/10)*10+mod(Id,10) --this is the number itself, Id
     else 
       mod(Id,10)*10+trunc(Id/10)  --reverse :)
   end Col
...