问题复现今天在开发的过程中,遇到这种情况然后又去oracle数据库里,查看一番,发现数据库寸的是0.9,这个零竟然离奇消失了。原因为何小数点前0会省略,是因为oracle数据库中存在一个隐形类型转换,
问题复现
今天在开发的过程中,遇到这种情况

然后又去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然后拼接上字段,如果不是,不做改变即可。
总结
处理的办法有很多,当然能解决问题就可以
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
相关文章:
-
oracle数据库有两种安全验证模式:os认证和口令(密码)认证一、os认证oracle的os认证(操作系统认证)是一种安全验证模式,它允许特定的操作系统用户无需提供数据库密码即可…
-
前情提要:本篇博客将详细介绍dml语言语法规则,并且有详细示例演示使用dml语言管理表,同时还有详细解析oracle版本:19c当你执行dml语句时:向表中添加新行修改表中的现有行…
-
前情提要:本篇文章将详细介绍oracle的sql语言中的转换函数和条件表达式,并且附上对应的详细例子和sql语句的编写以及解析。oracle版本:19c一、隐式和显式数据类型转换1…
-
oracle版本:19c一、单行函数简介sql函数两种类型的sql函数单行函数:处理数据项接受参数并返回一个值对返回的每一行采取行动每行返回一个结果可能会修改数据类型可以嵌套接受可…
-
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论