- 締切済み
打率などのデータ型について
打率などを表示させたいとき、 .360 などはデータ型は何を定義すればよいでしょうか? ご教授いただける方宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.3
PHPと併用が前提であれば、MySQLに登録する際は数値として 登録する方がよいでしょう。 hit,numberをint、averageをdoubleとしておき INSERT INTO `test`.`baseball` (hit ,number ,average) VALUES (1, 3, COALESCE(hit/number,0)); なんてしておけばよいでしょう。 かりに0打数0安打の場合でもaverageは0になります 表示はphpになりますので、そちらでsprintfなどで処理してください
- x_jouet_x
- ベストアンサー率68% (162/236)
回答No.2
回答#1の方が回答されている通り、DECIMAL(M,D)を使用します。 (M,D)は「値は合計でM桁まで格納でき、そのうちのD桁は小数点以下である」という意味です。 ただ運用を考えると、「打数」と「安打数」のデータがあるならばそちらをDBに格納しておき、「打率」は「打数」と「安打数」のデータを取得してプログラム中で計算・表示を行う方が一般的です。 おそらく、".360"といったデータのデータ型のみについての質問だと思いますが・・・。
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.1
decimalを使いましょう。 dec(4,3)で、0.333といった値を保持できます。
質問者
お礼
ありがとうございました。 勉強になりました。
お礼
x_jouet_x 詳しいご回答ありがとうございました。 >ただ運用を考えると、「打数」と「安打数」のデータがあるならばそちらをDBに格納しておき、「打率」は「打数」と「安打数」のデータを取得してプログラム中で計算・表示を行う方が一般的です。 おっしゃるとおりPHPで計算してDBに格納→WEB表示を行う予定なんですが、この場合、MYSQL側のテーブル定義で打率、DECIMAL(4,3)Tと定義しなくてもいいのでしょうか? 追加の質問、且つ素人発言で申し訳ございませんがお時間のあるときにでも・・・宜しくお願いします。