77家的会客2010

Tag: CASE | 记录数: 2
SQL中CASE的变态用法
Weather:雾转阵雨,东南风4-5级转南风4-5级,(20~25)℃

where (case curRec when 1 then a.spnumber=b.spnumber else 1=1 end)

或是

where a.spnumber=b.spnumber and a.spnumber(case curRec when 1 then =b.spnumber else not is null end)

这两句都不好用,想了好几分钟,其它的条件下(不进行a.spnumber字段判断的情况下,让此字段=自己不就行了 :)

SQL の CASE 式って知ってますか
Weather:晴转阴,南风4-5级,(21~27)℃

今日、同僚から MySQL って CASE 式を SQL の中に記述できましたっけ?と聞かれて、SQL 文に CASE - when 式を記述できることを初めて知りました。PL/SQL でのみ有効な構文かと勘違いしてました。
 
CASE 式はSQL-92 で標準に取り入れられており、意外と歴史は古いです。SQL99 からかと思いました。しかしながら、超便利な CASE 式を知っている人は意外と少ないと思います。Oracle なら同様の処理が記述できる DECODE 関数の方がメJn6;ャーですね。実際僕もこちらを用いて業務 SQL を書いてました。
 
が、CASE 式の方が明らかに高機能でした。DECODE 関数を使っているOracleユーJn5;には、是非CASE 式への乗り換えを勧めます。CASE 式には下記の通り4つの利用方法があります。