AWh*_*ley 3 sql oracle case-statement
这很好用:
select
case (1+2) -- (or_some_more_complicated_formula_yielding_a_numeric_result)
when 200 then '200'
when 100 then '100'
else 'other'
end hi_med_low
from dual ;
Run Code Online (Sandbox Code Playgroud)
但我需要做更多这样的事情:
select
case (1+2) -- (or_some_more_complicated_formula_yielding_a_numeric_result)
when greater than 200 then 'high'
when less than 100 then 'low'
else 'medium'
end hi_med_low
from dual ;
Run Code Online (Sandbox Code Playgroud)
建议?
case支持评估布尔条件的语法.它不像你想要的那样干净,因为你需要重新编写每个表达式,但它完成了工作:
select
case
when (1+2) > 200 then 'high'
when (1+2) < 100 then 'low'
else 'medium'
end hi_med_low
from dual ;
Run Code Online (Sandbox Code Playgroud)
一种可能的缓解措施可能是为子公式使用子查询,因此您只需编写一次:
select
case
when formula > 200 then 'high'
when formula < 100 then 'low'
else 'medium'
end hi_med_low
from (select (1+2) AS formula from dual);
Run Code Online (Sandbox Code Playgroud)