7

次のようなことを達成する可能性があるかどうか疑問に思っています

「if-elseif-else」条件、「case-when-then-else」があることは知っていますが、一度に1つの条件のみをチェックします(正しく理解していれば)。Oracle SQLでif-elseif-elseシナリオを実現するにはどうすればよいですか

4

3 に答える 3

20

このように case ステートメントを使用して if/else を使用できます。

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」があることは知っていますが、一度に 1 つの条件しかチェックしません

あなたが説明しているのは単純なケースです。Oracle には、SIMPLE と SEARCHED の 2 つのケース タイプがあります (詳細については、こちらを参照してください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

「Decode in 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 に答える