2017年7月12日 星期三

REAL/FLOAT欄位,取到小數點第4位(無條件捨去)

參考了網路的做法,但有一些問題無法排除
網路的解法為:round(VcutMeter,4,1)
但原本1.52會變成1.159 如下圖:
image
經過反覆測試,改用以下方式:
1.轉成varchar型態
2.len(round(VcutMeter,0,1))+1+4 為計算需要取到字串的第幾位,剛好可以取得小數點第4位
3.把取得的字串轉成numeric(10,4)
作法如下:
select  VcutMeter
,substring(CAST(VcutMeter as varchar(50)),1,len(round(VcutMeter,0,1))+1+4) 
,Cast(substring(CAST(VcutMeter as varchar(50)),1,len(round(VcutMeter,0,1))+1+4) as numeric(10,4))
from prodbasic
Where VcutMeter is not null
>>>len(round(VcutMeter,0,1))+1+4)  解法如下:
round(VcutMeter,0,1) : 取得整數部分
+1 : 小數點
+4 : 取小數點第4位

沒有留言: