1. 程式人生 > 其它 >SQL Server CAST 轉換double 型別 出現科學計數法

SQL Server CAST 轉換double 型別 出現科學計數法

排查一項問題的時候發現,上一個開發人員為了方便將double 型別 在資料庫裡轉換為了varchar(50),然後再程式中再轉為double.....

CAST((CASE WHEN M1.ApplyAmt IS NOT NULL THEN M1.ApplyAmt ELSE 0 END)AS NVARCHAR(100) 這行程式碼查詢的時候被表示成了科學計數法,再轉為doub的時候出現了精度丟失。

一直覺得float和double型別在sql server和其他語言等日常程式設計中沒有用途,而且容易造成麻煩(計算時出現近似值)等,建議使用decimal(18,2),但是老的程式就是這麼設計的....

解決方法:需將float/double等資料型別轉為標準的decimal型別後轉nvarchar即可

CONVERT (nvarchar (50),CONVERT (DECIMAL (18,2),(CASE WHEN M1.ApplyAmt IS NOT NULL THEN M1.ApplyAmt ELSE 0 END ))) AS [VALUE]

關於 CAST 和CONVERT

具體大家可以查閱一下官方資料

活著就要做有意義的事,最有意義的事就是好好活。