当我通过float
或LTRIM
传递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上观察到了相同的行为。
现在,我的理解是LTRIM
和RTRIM
应该从一个值中删除空格 - 而不是强制它/截断它。
有没有人知道这里发生了什么?
只是为了解释这个的背景。我使用一组C#POCO的属性生成SQL查询(结果将用于生成MD5哈希,然后将其与Oracle表中的等效值进行比较),为方便起见,使用LTRIM / RTRIM包装每一列
答案 0 :(得分:1)
也许您可以使用format()代替
Declare @F float = 11.7333335876465
Select format(@F,'#.##############')
返回
11.7333335876465