【Bug记录】Oracle中小数点前面的0不显示的问题

简介: 【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;
相关文章
|
Oracle 关系型数据库 数据库
0丢失之谜:解决Oracle中0开头小数被截断的问题
0丢失之谜:解决Oracle中0开头小数被截断的问题
939 0
|
Oracle 关系型数据库 数据库连接
oracle保留小数位数
oracle保留小数位数
oracle保留小数位数
|
21天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
138 64
|
11天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
21 7
|
11天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
15 6
|
11天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
15 5
|
17天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
20天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
19 1
|
2月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例