我需要将数据库列从FLOAT(12,2)
转换为DECIMAL(12,2)
。表中的行并不多(大约100K),因此迁移时间应该不是问题,我可以直接运行该语句而无需任何临时列,诸如此类:
ALTER TABLE `{name}` CHANGE `{column}` `{column}` DECIMAL(12, 2) NOT NULL
我唯一的问题是,我是否可以预期此转换会带来任何价值损失。我想不是因为精度相同。你能证实我的假设吗?
答案 0 :(得分:1)
进行基本测试
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
尽管警告所有数据都相同。确实花了一段时间 因此,运行查询)