我想知道是否有可能实现类似的目标
'if-elseif-else' 条件,我知道有一个 'case-when-then-else' 但它一次只检查一个条件(如果我理解正确的话)。如何在 Oracle sql 中实现 if-elseif-else 场景
您可以使用 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;
我知道有一个“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'
留意“在 Oracle 中解码”
decode( expression , search , result [, search , result]... [, default] )
它类似于“if-elseif-else”
参考:http ://www.techonthenet.com/oracle/functions/decode.php
注意:它只做相等检查..