- ベストアンサー
0の除算
PostgreSQLのSQL文で0の割り算だと計算をしないで, 0やNullを返すようなSQL文を作りたいのですが, 分かりますか? 例えば select field0, ( field1 / field2 ) as result; だと「field2」が0の場合エラーがでてしまいます。 field0は出力したいのでWhere文で Where field2 <> 0 は使えません。 オラクルではdecodeという関数が使えるようですが。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
PostgreSQLでは、CASE式が使えます。 例) ---------------------------------------------- SELECT CASE WHEN field2 = 0 THEN NULL ELSE field1 / field2 END AS result FROM table1; -------------------------------------------------- バージョンは、少なくとも7.0以降であれば使えると思います。
その他の回答 (1)
- siteuma
- ベストアンサー率28% (77/271)
Postgreは自分ではあまり使ったことが無いので、 ちょっと自身が無いのですが、確かCASEが使えたかと。 select field0, case field2=0 then null else (field1 / field2) end as result from table; こんなところ?
お礼
ありがとうございました,が,残念ながらcase elseは使えませんでした。 とりあえずストアドで CREATE OR REPLACE FUNCTION plfnc_0ToNull( double precision, double precision ) RETURNS TEXT AS ' DECLARE pf0 ALIAS FOR $1; pf1 ALIAS FOR $2; BEGIN IF pf1 <> 0 THEN ELSE return null; END IF; return pf0 / pf1; END; ' LANGUAGE 'plpgsql'; を作り select plfnc_0ToNull(1,0); で,対応しました。
補足
ありがとうございました。できました。