数字到数字的转换

当将数据从一种数字数据类型转换为另一种数字数据类型时,偶尔会发现舍入错误。

下表指示哪些数字数据类型转换是可接受的,以及当在某些数字数据类型之间转换时可能遇到哪些种类的错误。 在表中,使用了以下代码:

OK
无错误
P
可能会出错,这取决于小数的精度
E
可能会出错,这取决于数据值
D
无错误,但可能会丢失较少的有效位
表 1. 可接受的转换和可能的错误.

此表显示了可接受的数据类型转换和可能导致错误的转换。

目标类型 SMALL INT INTEGER INT8 SMALL FLOAT FLOAT DECIMAL
SMALLINT OK OK OK OK OK OK
INTEGER E OK OK E OK P
INT8 E E OK D E P
SMALLFLOAT E E E OK OK P
FLOAT E E E D OK P
DECIMAL E E E D D P

例如,如果将 FLOAT 值转换为 DECIMAL(4,2),那么数据库服务器在将浮点数存储为 DECIMAL 之前先对它进行舍入。

此转换可能会导致错误,这取决于指定给 DECIMAL 列的精度。