从double数据类型切换到decimal

时间:2014-06-10 07:12:09

标签: mysql double decimal type-conversion

我有一个当前使用double数据类型的数据库,我想将其更改为使用deciaml数据类型,因为我听说double数据类型实际上不是存储货币数据时可信,因为它是近似的。

所以我只是想知道如果我只改变数据类型是否应该有任何问题?一切都应该改变,没有数据丢失?

2 个答案:

答案 0 :(得分:4)

是的,除非仔细计划,否则您确实存在丢失数据的风险,但只要您确保数据已经一致且您为该字段选择了正确的长度,就应该没问题。请考虑以下事项:

ALTER TABLE yourtable MODIFY COLUMN yourcolumn DECIMAL;

这会将yourcolumn转换为DECIMAL,但它会导致DECIMAL(10,0),这实际上是整数列。如果你继续转换为DECIMAL(10,2)而不是:

ALTER TABLE yourtable MODIFY COLUMN yourcolumn DECIMAL(10,2);

你将失去超过小数点后的所有内容。作为示例,值10.025将被转换为10.03。如果您的所有值都只有两个小数位,那么您应该没问题。

以上所有内容适用于MySQL 5.5.25

答案 1 :(得分:1)

一种安全的方法是

alter table your_table add column `test_col` decimal(8,2);

然后将现有值复制为新的col

update table `your_table` set test_col = `col_double_datatype`;

然后检查数据是否被正确复制,如果看起来好看,请删除col_double_datatype并将test_col重命名为您正在使用的数据。