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,该列中已经存在的值可能不是精确值(因为浮点不精确)。精度不会有任何损失,但是我怀疑表大小(以字节为单位)会增加。不过,我可能错了。