oracle SQL中的if-elseif-else'condition'

时间:2013-02-22 10:48:13

标签: sql oracle

我想知道是否有可能实现像

这样的事情

'if-elseif-else'条件,我知道有一个'case-when-then-else'但它一次只检查一个条件(如果我理解正确)。如何在Oracle sql中实现if-elseif-else场景

3 个答案:

答案 0 :(得分:18)

你可以使用if / else这样的case语句。

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 :(得分:1)

  

我知道有一个'case-when-then-else'但它只检查一个   一次条件

您所描述的是一个简单的案例。 Oracle有两种案例类型:SIMPLE和SEARCHED(有关详细信息,请参阅此处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

搜寻过

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

您可能想要使用搜索过的案例。您可以在PL / SQL或SQL中使用它们。例如在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'

答案 2 :(得分:0)

留意Oracle中的#34;解码"

decode( expression , search , result [, search , result]... [, default] )

类似于" if-elseif-else"

参考:http://www.techonthenet.com/oracle/functions/decode.php

注意:它只进行相等检查..