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哈哈~