以下查询在Sybase ASE上运行
SELECT ROUND(FixedRate,2) AS FixedRate FROM TableName WHERE ID=10000905;
结果是
固定速率
0.28
以下查询在Oracle 11g上运行
SELECT Round(FIXED_RATE,2) AS FixedRate FROM TableName WHERE ID=10000905;
结果是
固定
0.29
两个db的未舍入值均为0.285。在sybase中FixedRate的数据类型为float,在Oracle中为float(126)。
为什么会有差异(Sybase中为0.28,Oracle中为0.29)?如何使这两个数据库中的差异相同?
我记得,SYBASE对FLOATS不使用Base-10编码,因此.285被存储为.284999999999999999。这就是为什么它是四舍五入而不是甲骨文的四舍五进。Oracle的TRUNC(FIXED_RATE,2)和SYBASE的TRUNCATE(FIXED_RATE,2。