SQL には短絡構文と階層的な複数評価構文の両方がありますか?
短絡割り当ての例。decision
... が true の場合、最初の *** 句を取得します。
短絡
case
when (...) then (***)
when (...) then (***)
when (...) then (***)
else (...)
end as decision
階層割り当ての例。ここでdecision
は、... が true の場合に LAST *** 式を取得します。
階層的
if (...) then (decision = ***) end
if (...) then (decision = ***) end
if (...) then (decision = ***) end
相互変換
式の順序を逆にすると、階層と短絡が切り替わることは明らかです。SQL にも LAST tr 式を割り当てる構造があるかどうか疑問に思っていますか?
テストケース:
以下は、非常に単純なおもちゃの例です。
select
flag1, flag2, flag3,
case
when flag1=1 and flag2=0 then 'LEFT'
when flag1=0 and flag2=0 then 'NONE'
when flag2=0 and flag3=1 then 'RIGHT'
end as decision
FROM
( select
1 as flag1, 0 as flag2, 1 as flag3
-- from dual -- if you use Oracle
) tmp ;
短絡 SQL は 'LEFT' を返します
階層割り当ては「RIGHT」を返します。
編集:リンクをクリックすると、この例をSQL-Fiddleで実行できます。(その便利なサイトを指摘してくれた ypercube に感謝します! (+1))