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