将FLOAT(12,2)转换为DECIMAL(12,2)

时间:2018-09-27 08:07:53

标签: mysql

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

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

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

1 个答案:

答案 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

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