MySQL将float字段中的数据转换为decimal字段

标签 mysql database

我的 MySQL 表中有一些数据被错误地存储为 float 数据类型。例如:

7.45

我需要将该数据转换为十进制类型,这样我就不会遇到舍入错误。

如果我这样做:

ALTER TABLE `invoice_line`
CHANGE `line_quantity` `line_quantity` decimal(18,6) unsigned NOT NULL AFTER `line_rate`;

我最终在表中得到这样的值:

70.449997

如何在不破坏数据的情况下正确地将数据转换为十进制

最佳答案

我会使用诸如mysqldump之类的东西(或者MySQL Workbench也有一个实用程序)来转储表。然后执行 ALTER 并重新创建它。仅仅增加精度就会引入这样的错误,因为无论如何 float 通常都是不精确的。

关于MySQL将float字段中的数据转换为decimal字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22999799/

相关文章:

.net - 设计只能具有 2 个外键之一的数据库实体?

ruby - 如何在 Rails 3 中保存嵌套对象?

sql - 如何转换时间戳的时区以便在 Oracle DB 中进行比较?

mysql - "if not exists"SQL语句给出错误

mysql - 将mysql数据库中的表的所有列更改为大写

java - hibernate - 错误 : Data truncation: Incorrect datetime value

php - 这些 PHP if 语句是否存在逻辑错误?

php - 如何为多行修改此 MySQL INSERT 查询?

mysql 如何对列中的时间求和

php - PHP PDO 的 SQL 内部连接错误