MySQL中float类型字段的显示问题
2014-11-10 13:37
495 查看
由于受到版本和平台的限制,同样的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类型字段存储的数据不一样。
影响:
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类型字段存储的数据不一样。
相关文章推荐
- MySql 字段类型为float时,SUM汇总时出现一堆小数的问题
- 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题
- mysql添加DATETIME类型字段导致Invalid default value错误的问题
- 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题
- mysql添加DATETIME类型字段导致Invalid default value错误的问题
- mysql中int()字段类型长度 问题解释
- 记一次mysql中浮点类型字段引起的问题
- mysql字段类型decimal和int类型运算,结果精度问题
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- C#读取MySql时,如果存在字段类型为date/datetime时的可能会出现以下问题
- java Timestamp类型插入Timestamp类型的mysql字段的问题
- 1292 - Incorrect datetime value: '' for column Mysql5.6 中datetime 类型字段的插入问题
- mysql小数类型字段,float,double
- java和mysql定义的字段类型不一致,前端取值问题
- 关于Java读取mysql中date类型字段默认值'0000-00-00'的问题
- 创建mysql数据表时,字段的int类型长度问题
- mysql中字段类型是datetime时比较大小问题
- mysql中字段类型是datetime时比较大小问题
- 在mysql存储过程中拼接sql解决in的字段类型不匹配问题
- mysql---使用unsigned字段类型时的问题