LTRIM和RTRIM截断浮点数

时间:2016-10-20 13:28:09

标签: sql-server

当我通过floatLTRIM传递RTRIM值时,我遇到了我所说的完全出乎意料的行为:

CREATE TABLE MyTable
(MyCol float null)

INSERT MyTable
values (11.7333335876465)

SELECT  MyCol, 
        RTRIM(LTRIM(MyCol)) lr, 
        LTRIM(MyCol) l, 
        RTRIM(MyCol) r 
FROM    MyTable

其中给出了以下结果:

MyCol              | lr      | l       | r
--------------------------------------------
11.7333335876465   | 11.7333 | 11.7333 | 11.7333

我在SQL Server 2014和2016上观察到了相同的行为。

现在,我的理解是LTRIMRTRIM应该从一个值中删除空格 - 而不是强制它/截断它。

有没有人知道这里发生了什么?

只是为了解释这个的背景。我使用一组C#POCO的属性生成SQL查询(结果将用于生成MD5哈希,然后将其与Oracle表中的等效值进行比较),为方便起见,使用LTRIM / RTRIM包装每一列

1 个答案:

答案 0 :(得分:1)

也许您可以使用format()代替

Declare @F float = 11.7333335876465
Select format(@F,'#.##############')

返回

11.7333335876465