2013-02-22 11 views
7

Zastanawiam się, czy istnieje, czy możliwość uzyskania pewnych rzeczy jakif-elseif-else 'warunek' w Oracle SQL

'if-elseif-else' warunek, wiem, że jest to „przypadek, kiedy, po czym -else "ale sprawdza tylko jeden warunek na raz (jeśli rozumiem go poprawnie). Jak mogę osiągnąć if-elseif-else scenariusz w Oracle SQL

+1

Zagnieżdżanie instrukcji CASE jest jedną z opcji. Nie jestem dostatecznie zaznajomiony z Oracle, żeby wiedzieć, czy jest lepszy sposób. –

+0

Co rozumiesz przez _it sprawdza tylko jeden warunek na raz_, ponieważ instrukcja case powinna pomóc. Jeśli nie, użyj dekodowania, ale sprawdza tylko równość – asifsid88

+0

Zobacz http://stackoverflow.com/questions/14386881/using-if- else-in-oracle – glh

Odpowiedz

17

można używać if/else przy użyciu instrukcji przypadku takim jak t jego.

SELECT ename, CASE WHEN sal = 1000 THEN 'Minimum wage' 
        WHEN sal > 1000 THEN 'Over paid' 
        ELSE 'Under paid' 
       END AS "Salary Status" 
FROM emp; 
1

wiem, że jest to 'case-kiedy-then-else', ale to tylko jeden sprawdza stan naraz

Co ty opisujesz to prosta sprawa. Oracle ma dwa rodzaje postępowania: prosty i przeszukiwane (patrz tutaj, aby uzyskać więcej informacji http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm)

SIMPLE

case A 
    when 1 then 'foo' 
    when 2 then 'bar' 
    else .. 
end 

SZUKANA

case 
    when A=1 and B='A' then 'foo' 
    when D + C =1 and B !='A' then 'Bar' 
    else .. 
end 

prawdopodobnie chcesz używać wyszukanego sprawę. Możesz ich używać w PL/SQL lub SQL. np. w SQL

select .. 
    from table 
where case 
     when A=1 and B='A' then 'foo' 
     when D + C =1 and B !='A' then 'Bar' 
     else .. 
     end = 'foo' 
+0

Użyłem czegoś takiego, ale to nie działa – user964147

+0

tak potrzebuję szukanego przypadku – user964147