2013-02-22 17 views
7

Mi chiedo se ci se possibilità di ottenere qualche cosa comeif-elseif-else 'condizione' in Oracle SQL

'if-elseif-else' condizione, so che c'è un 'caso quando, allora -else 'ma controlla solo una condizione alla volta (se ho capito bene). Come posso ottenere se-elseif-else scenario in Oracle SQL

+1

Le istruzioni CASE di annidamento sono una opzione. Non conosco abbastanza bene Oracle per sapere se c'è un modo migliore però. –

+0

Cosa intendi con _un controllo di una sola condizione alla volta_ Come l'istruzione case dovrebbe aiutare..se non usare la decodifica ma solo i controlli di uguaglianza – asifsid88

+0

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

risposta

17

È possibile utilizzare if/else usando dichiarazioni caso come t il suo.

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

So che c'è un 'caso quando-then-else', ma controlla solo una condizione alla volta

cosa si sta descrivendo è un caso semplice. Oracle ha due tipi di casi: semplice e ricercato (vedi qui per ulteriori informazioni http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm)

SEMPLICE

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

CERCATO

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

probabilmente si desidera utilizzare un caso ricercato. Puoi usarli in PL/SQL o SQL. es. in 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

Avevo usato qualche cosa come questa ma non funziona – user964147

+0

sì ho bisogno del caso cercato – user964147