Mysql 将浮点(12,2)转换为十进制(12,2)
我需要将数据库列从Mysql 将浮点(12,2)转换为十进制(12,2),mysql,Mysql,我需要将数据库列从FLOAT(12,2)转换为DECIMAL(12,2)。表中的行不多(约100K),因此迁移时间应该不会有问题,我可以直接运行语句,而不需要任何临时列,等等。如下所示: ALTER TABLE `{name}` CHANGE `{column}` `{column}` DECIMAL(12, 2) NOT NULL 我唯一的问题是,我是否可以预期这种转变会带来任何价值损失。我想不是因为精度是一样的。你能确认我的假设吗?进行了基本测试 SELECT * FROM float_
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
尽管有警告,所有数据都是相同的。确实花了一段时间
因此,运行查询)我不希望在以相同的精度从浮点到十进制的过程中丢失任何信息。但是,由于您使用的是float,该列中已经存在的值可能不是精确值(因为浮点不精确)。精度不会有任何损失,但是我怀疑表大小(以字节为单位)会增加。不过,我可能错了。