服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

oracle数据库百分比格式化的解决方案

【赛迪网-it技术报道】问题:需要对在oracle数据库中查询出来的数值进行比率的计算。类似于如下的sql:

select round((discount/amount),2) from dual;

这样算出来的数字可以满足绝大部分的需求。但是对于不到1的数字,问题出来了......显示的类似于 .45样子的数据。0.45前面的0不见了。

以下总结了两种方法来解决缺0的问题。

第一种解决方法:

select decode (trunc (1/100),0, replace (1/100, '.', '0.'),to_char (1/100))
from dual;

大家只要在1/100的地方替换成自己需要的百分数就可以了。

第二种解决方法:

select rtrim(to_char(1/100,'fm99999999990.9999'),'.') from dual;

替换方式和上面相同。

两种方式的详细比较:

第一种公式比较复杂,但可以处理通用的数值。

第二种看起来简单,不过格式化的值的位数一定要大于计算的位数才行。比如 select rtrim(to_char(200,'fm90.9999') ,'.') from dual; 显示的就是########,因为已经超过了格式化的范围。

扫描关注微信公众号