7

我想知道是否有可能实现类似的目标

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

4

3 回答 3

20

您可以使用 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;
于 2013-02-22T10:52:25.857 回答
1

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

您所描述的是一个简单的案例。Oracle 有两种案例类型:简单和搜索(有关更多信息,请参见此处http://docs.oracle.com/cd/B19306_01/server.102/b14200/expressions004.htm

简单的

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'
于 2013-02-22T10:53:56.433 回答
0

留意“在 Oracle 中解码”

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

它类似于“if-elseif-else”

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

注意:它只做相等检查..

于 2013-02-22T10:51:46.653 回答