Bug记录Oracle中小数点前面的0不显示的问题
Posted Bug解决者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bug记录Oracle中小数点前面的0不显示的问题相关的知识,希望对你有一定的参考价值。
项目场景
在一次将列表数据导出到Excel
中的实现过程中,列表数据有个比例的字段,要求导出到Excel
中该字段的数据要以百分数的形式
进行显示。
问题描述
后台查询列表数据的时候,SQL语句我是这样进行拼接的(下面SQL为模拟SQL)。经过测试发现,最终导出到Excel中的数据该字段小数点前面的0丢失了。
select t.ratio * 100 || '%' from tmp_table t;
于是,在Plsql中执行该Sql语句发现
原因分析
这是由于Oracle中存在隐形转换,当与字符串进行拼接时自动调用了to_char函数,并且to_char在做转化时,如果你不指定格式,它就按它的格式去做转化,结果就把0给转不见了,所以在做转化时要给定格式。
解决方案
在进行隐形转换之前把小数进行字符串转换后再进行拼接,最终把SQL修改为下面的方式:
select to_char(t.ratio * 100,'fm990.0000') || '%' from tmp_table t;
以上是关于Bug记录Oracle中小数点前面的0不显示的问题的主要内容,如果未能解决你的问题,请参考以下文章
jsp小数显示问题 例如 我在oracle 数据库中查询出来的是 0.01 但是在jsp页面上就显示成 .01 没有前面的0