Oracle資料庫欄位保留3位小數,程式讀出來顯示4位小數

需求

  項目需求從欄位2位小數,改成3位小數,這事兒好辦,資料庫噼里啪啦敲了一行程式碼,發現居然報錯,原因是不能修改欄位精度問題,然後使用了冒泡排序,搞定

--新增臨時欄位
alter table Real_Proj_Section add WEIGHT2 number(10,3);
--將原欄位內容拷貝至新欄位
UPDATE Real_Proj_Section SET WEIGHT2=WEIGHT
--刪除原先欄位
alter table Real_Proj_Section drop column WEIGHT
--新增原先欄位
alter table Real_Proj_Section add WEIGHT number(10,3);
--給原先欄位加備註
comment on column  Real_Proj_Section.Weight is '分段重量'
--將臨時欄位內容拷貝至原先欄位
UPDATE Real_Proj_Section SET WEIGHT=WEIGHT2
--刪除臨時欄位
alter table Real_Proj_Section drop column WEIGHT2

遇到問題

  可以是到前台顯示就出現問題了,資料庫中明明保留的是3位小數前台顯示的時候,會顯示4位小數後面多一個「0」

資料庫欄位,顯示也是3位小數

問題思考與解決

  剛開始以為程式的問題,調試過程中,發現返回DataTable中,這個值就多個「0」,感覺應該是精度丟失問題,然後百度查,發現之前有人也碰到過此問題,一直沒人解決,能試過的方法都試過了,後來沒轍了,都打算放棄治療了。晚上睡上一覺,第二天醒來後,腦海中冒出一個新想法,將欄位轉字元串試試看唄,死馬當活馬醫,後台sql改為,前面加個TO_CHAR

SELECT TO_CHAR(WEIGHT) WEIGHT FROM Real_Proj_Section WHERE SPS_ID=    272262

搞定~

  人生還是得經得起折騰,O(∩_∩)O哈哈~