MySQLでint型に小数値をINSERTしたときの挙動

DSC00763 (1)

2014年05月21日(水)

わっしょい。MySQLのTipsだよ。こんなこと知ってるわ!という方も多いでしょうが僕は全然しらなくて、やってみたら、「まじだぁ」みたいな感じになったので検証結果とともに今回はお送りします。

 

知ってました?int型の挙動を・・・

MySQLでint型を指定したときにそのカラムに小数値をINSERTした時の挙動を。

つまりint型って一般的に整数値?が入るわけなんですが、その値にもし、仮にもし少数値をINSERTした場合にどうなると思います?

実はこれ、きちんとした法則があって、わかってやっている人とわかっているからそのパターンでは絶対に入らないようにするか、プログラム側で制御していたりするんです。その挙動がこちら。

mysql> INSERT INTO numtest VALUES (0.3);
mysql> INSERT INTO numtest VALUES (12.345);
mysql> INSERT INTO numtest VALUES (24.5);

mysql> SELECT * FROM numtest;
+------+
| a |
+------+
| 0 | 
| 12 | 
| 25 | 
+------+

つまり小数値をINSERTした場合はMySQLは自動的に四捨五入します。ワーニングも出さないので知っていれば使えるのかもしれない。。。


ただ、アプリケーション内で計算している値がテーブルカラムの仕様と異なっているのはいかがなものかと思うのでそこらへんは各自の意識で対応しよう。


とりあえず小数は丸め込まれるということ。覚えておこう。

 

わかっているのと、わからないのでは相当ちがうで。

 

スポンサードリンク

運営サービスPR

スポンサードリンク

運営サービスPR