-1
我遇到什么,当我通过任LTRIM
或RTRIM
传递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 。
看起来是转换为字符串以满足功能要求。没有什么奇怪的 –
为什么你试图修剪空白'float数据类型呢?永远不会有任何。这只能应用于字符串表示。 –
因此,当您使用具有浮点值的字符串函数时,您会得到意想不到的行为。那么不要这样做。 –