我有一个当前使用double
数据类型的数据库,我想将其更改为使用deciaml
数据类型,因为我听说double
数据类型实际上不是存储货币数据时可信,因为它是近似的。
所以我只是想知道如果我只改变数据类型是否应该有任何问题?一切都应该改变,没有数据丢失?
答案 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
重命名为您正在使用的数据。