我需要将数据库列从FLOAT(12,2)转换为DECIMAL(12,2)。表中没有很多行(大约100K),因此迁移时间应该不是问题,我可以直接运行该语句而无需任何临时列,等等。

ALTER TABLE `{name}` CHANGE `{column}` `{column}` DECIMAL(12, 2) NOT NULL


我唯一的问题是,我是否可以期望这种转​​变会带来任何价值损失。我想不是因为精度相同。你能证实我的假设吗?

最佳答案

进行基本测试

SELECT * FROM float_test

0.30
0.12
0.70
5561064448.00
2734151168.00
7367510528.00
5589978112.00
591043776.00
9939725312.00
1450539136.00
2416124160.00
123580832.00
814644608.00
410369856.00
2416124160.00
2416124.25
241612.23

ALTER TABLE float_test CHANGE test_value test_value DECIMAL(12, 2) NOT NULL

17 row(s) affected, 4 warning(s):
 1265 Data truncated for column 'test_value' at row 1
 1265 Data truncated for column 'test_value' at row 2
 1265 Data truncated for column 'test_value' at row 3
 1265 Data truncated for column 'test_value' at row 17
 Records: 17  Duplicates: 0  Warnings: 4    0.125 sec

SELECT * FROM float_test

0.30
0.12
0.70
5561064448.00
2734151168.00
7367510528.00
5589978112.00
591043776.00
9939725312.00
1450539136.00
2416124160.00
123580832.00
814644608.00
410369856.00
2416124160.00
2416124.25
241612.23


尽管有警告,所有数据都是相同的。确实花了一段时间
因此运行查询)

关于mysql - 将FLOAT(12,2)转换为DECIMAL(12,2),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52532310/

10-14 12:52
查看更多