日期:2014-05-17  浏览次数:21349 次

oracle数字类型自动补零的问题
oracle中字段NUMBER(p,s)取出来显示到前台的时候小数位就变成s+1位了,总是自动的补零,中间没有任何处理!取出来直接绑定的!在线等大侠帮忙啊!

------解决方案--------------------
你通过啥工具看的补零了?(不是s位,而是s+1位了)
你提到过“绑定”,用什么语言绑定的?


------解决方案--------------------
看看number的定义你就知道了:
SQL code
number(p,s) p:1~38  s:-84~127 
最高整数位数=p-s 
s正数,小数点右边指定位置开始四舍五入 
s负数,小数点左边指定位置开始四舍五入 
s是0或者未指定,四舍五入到最近整数 
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数。 

p>0,对s分2种情况: 
1. s>0 
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。 
2. s<0 
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|

------解决方案--------------------
考虑用下LPAD SUBSTRING 字符串处理函数