読者です 読者をやめる 読者になる 読者になる

CASE・・・演算子?

今日職場で超図解 SQLハンドブックという本*1を読んだ。
その中で、CASE式が演算子として紹介されてた。
まぁ、CASE「文」として紹介するよりも遙かにましなんだけど・・・その後にJavaのswitchと同じような物、みたいなことが書かれていてしょんぼり。


CASE式はswith文なんかとは全然違うよ!
式だからほとんどどこにでも書ける*2んだよ!!


例えば。

-- 勘定科目コードによって貸方を足すか、借方を引くかが違うときとかに使える
SELECT sum(CASE col1 WHEN 1 THEN col2 ELSE -col3 END) FROM SomeTable

こんな風に、集計関数の中に入れることだって出来ちゃう。


でもあえてCASEを演算子として教えても、弊害はあんまりないかな。
だとするとこれは何項演算子だ?最低2項必要だけど、それ以上も可能だし・・・
あれ、それ以前に、IN述語なんかも演算子と考えると・・・


これは弊害なのかどうなのか。

*1:エクスメディアじゃん!懐かしい(ぇ

*2:というか文だったらSELECT文の中にすら書けない