トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

7-23 短絡OR

SQLパズル

Val1が、0と等しい、または、
Val2/Val1が10以上の行を出力する。


SQL

select Val1,Val2
from (select 0 as Val1,1 as Val2 from dual
union select 2,5 from dual
union select 3,30 from dual
union select 4,90 from dual
union select 5,50 from dual
union select 0, 9 from dual)
where case when Val1=0 then 1
           when Val2/Val1 >=10 then 1
      end =1;


解説

検索case式は、
when句がTrueになったら、後続のwhen句を評価しないので、
短絡ORを実現できます。