IT俱乐部 Oracle 如何解决Oracle中0开头小数被截断的问题

如何解决Oracle中0开头小数被截断的问题

问题复现

今天在开发的过程中,遇到这种情况

然后又去oracle数据库里,查看一番,发现数据库寸的是0.9,这个零竟然离奇消失了。

原因 

为何小数点前0会省略,是因为Oracle数据库中存在一个隐形类型转换,

在拼接的过程中小数自动转成字符类型,相当于调用了to_char函数,所以丢失小数点前面的0

解决方式一

加上to_char(字段,’fm9999999999999990.00’) ,(查看表结构设计,我这里类型是number(16,2),所以设置前面小数点前面最多16位,后面保留2位)

解释:

  • 其中9代表如果存在数字则显示数字,不存在则显示空格;
  • 0代表如果存在数字则显示数字,不存在则显示0,即占位符;
  • fm代表删除如果是因9带来的空格,则删除。

解决方式二

decode(SUBSTR(字段,1,1),'.','0'||字段,字段) 字段别名

解释:

截取值,如果开头是 小数点,那么加个0然后拼接上字段,如果不是,不做改变即可。

总结

处理的办法有很多,当然能解决问题就可以

以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/oracle/18702.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部