• ベストアンサー

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