1. 程式人生 > >MySQL中float型別欄位的顯示問題

MySQL中float型別欄位的顯示問題

由於受到版本和平臺的限制,同樣的SQL在不同的平臺上執行的結果可能會不一致。


影響:
1. mysql在升級或遷移時可能會導致float型別的資料發生變化。
2. mysqldump建立的備份在slave上進行恢復,可能會遇到float型別的資料在master和slave上顯示不一致。
參考:http://dev.mysql.com/doc/refman/5.6/en/problems-with-float.html

mysql> CREATE TABLE t2(c1 FLOAT(53,0), c2 FLOAT(53,0));
mysql> INSERT INTO t2 VALUES('1e+52','-1e+52');
mysql> SELECT * FROM t2;
+----+----+
| c1 | c2 |
+----+----+
|  1 | -1 |
+----+----+

1 row in set

mysql> select version();
+-------------------------+
| version()               |
+-------------------------+
| 5.0.45-community-nt-log |
+-------------------------+
1 row in set

mysql> select  version();
+-----------+
| version() |
+-----------+
| 5.6.11    |
+-----------+
1 row in set

mysql> CREATE TABLE t2(c1 FLOAT(53,0), c2 FLOAT(53,0));
mysql> INSERT INTO t2 VALUES('1e+52','-1e+52');
mysql> SELECT * FROM t2;
+----+----+
| c1 | c2 |
+----+----+
|  0 |  0 |
+----+----+
1 row in set

同樣的資料型別,同樣的insert語句,在不同的mysql版本中,float型別欄位儲存的資料不一樣