我想知道是否有可能实现像
这样的事情'if-elseif-else'条件,我知道有一个'case-when-then-else'但它一次只检查一个条件(如果我理解正确)。如何在Oracle sql中实现if-elseif-else场景
答案 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
注意:它只进行相等检查..