• ベストアンサー

NULLを 0 として計算する方法は?

NULL は 0 として扱って欲しい時はどうすればよいのでしょうか? select (単価 * 数量 - 値引) as 小計 from 注文 値引がNULLだと小計が全てNULLになってしまいます。 Access関数のNz(値引)のようなのあるでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

案1 SELECT (単価 * 数量 - IF(値引,値引,'0')) as 小計 from 注文; 案2 create table の時に、 default 0 を入れる。

参考URL:
http://dev.mysql.com/doc/mysql/ja/control-flow-functions.html
xespr
質問者

お礼

ありがとうございます。できました! やっぱり案2にするのが正しいんですよね。なるべくスッキリ簡単な構造にしたい気持ちがあったので...

その他の回答 (2)

回答No.3

標準的なSQLの関数で、IFNULLというのがあります。 IFNULL(x,y) のような形で書きます。 x が NULL なら、y をそれ以外は x を返します。 select (単価 * 数量 - IFNULL(値引, 0)) as 小計 from 注文 と書けば、O.K.です。 4.0 で試しています。

xespr
質問者

お礼

ありがとうございます。 やっぱり標準的な関数が良いですね!

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

NZ()で行けると思います。 select (NZ(単価,0) * NZ(数量,0) - NZ(値引,0)) as 小計 from 注文 でどうでしょう?

xespr
質問者

お礼

ダメでした。 どうしてか、わかりませんでした。 Check the manual that corresponds to your MySQL server version for the right syntax to use near '(値引 ... でも、NZ()というのもあるんですね。 ありがとうございます。

関連するQ&A