-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數據類型呢?永遠不會有任何。這隻能應用於字符串表示。 –
因此,當您使用具有浮點值的字符串函數時,您會得到意想不到的行爲。那麼不要這樣做。 –