プロが教える店舗&オフィスのセキュリティ対策術

PostgreSQLのSQL文で0の割り算だと計算をしないで,
0やNullを返すようなSQL文を作りたいのですが,
分かりますか?

例えば
select field0, ( field1 / field2 ) as result;
だと「field2」が0の場合エラーがでてしまいます。

field0は出力したいのでWhere文で
Where field2 <> 0
は使えません。

オラクルではdecodeという関数が使えるようですが。

A 回答 (2件)

PostgreSQLでは、CASE式が使えます。



例) ----------------------------------------------
SELECT CASE WHEN field2 = 0 THEN NULL ELSE field1 / field2 END AS result FROM table1;
--------------------------------------------------

バージョンは、少なくとも7.0以降であれば使えると思います。

参考URL:http://www.postgresql.jp/document/pg743doc/html/ …

この回答への補足

ありがとうございました。できました。

補足日時:2004/09/15 16:02
    • good
    • 0

Postgreは自分ではあまり使ったことが無いので、


ちょっと自身が無いのですが、確かCASEが使えたかと。

select
field0,
case field2=0 then null
else (field1 / field2)
end as result
from table;

こんなところ?
    • good
    • 0
この回答へのお礼

ありがとうございました,が,残念ながら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);
で,対応しました。

お礼日時:2004/09/13 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す