oracle保留两位小数解决方案
发布时间:2024-01-25 03:22:37
公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可.
个人认为比较方便的一种
select decode(n_jg,0,'0.00',trim(to_char(n_jg,'9999999.99'))) from tbl
如果只是检索,可是使用:
1、select trunc(CUR_SUM,2) from data_record;
将小数转化成百分比=> round(zcbj/zs*100)||'%' ==trunc((zcbj/zs),2)*100||'%'
2、如果想更新数据,可以使用:
update data_record set CUR_SUM=trunc(CUR_SUM,2) where REC_NO=123
方法一:使用to_char的fm格式
to_char(round(data.amount,2),'FM9999999999999999.00') as amount
不足之处是,如果数值是0的话,会显示为.00而不是0.00。
另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。
解决方式如下:
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;
方法二:使用case when then else end进行各种情况的判断处理
case
when instr(to_char(data.amount), '.') < 1 then
data.amount || '.00'
when instr(to_char(data.amount), '.') + 1 = length(data.amount) then
data.amount || '0'
else
to_char(round(data.amount, 2))
end as amount_format
方法三:可以使用Oracle自带的参数设置
column amount format l9999999999.99
此方法的不足是,format中的小数点左面的9的个数要已知,否则会出现超过的数字显示为########的情况。
另外一个问题是,使用column时,设置生效是session级还是system级,需要注意。
也许某张表的数值列不总是要求所有的地方显示时,都是小数点后两位的格式,此时只能使用session级,但是有个数据库连接会话超时的问题,如果不是使用到system级,不建议使用该方法。
方法四:使用to_char+trim的方式
select trim(to_char(1234,'99999999999999.99')) from dual;
或者
select ltrim(trim(to_char(1234.525,'00000000000000.00')),'0') from dual;
此处使用了14个9或者14个0的格式,建议使用14个9的方式,方便些。方法四的不足之处是:
如果数值是0的话,转化之后为.00而不是0.00,补救措施是,decode一下。
另一需要注意的是,格式中小数点左边9或者0的个数要够多,负责查询的数字会显示为n个符号“#”。
如下:
select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
select decode(salary,0,'0.00',ltrim(trim(to_char(salary,'00000000000000.00')),'0')) from can_do;
结论:建议使用方法四中的trim+to_char的方式或者方法一的补救之后的方式,而且最好使用小数点左边n个9的方式,不要使用0的方式,否则,要多一步trim处理。
即:select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
select decode(salary,0,'0.00',(to_char(round(salary,2),'fm99999999999999.00'))) from can_do;


猜你喜欢
- 废话不多说,估计只有我这个菜鸟废了2个小时才搞出来,主要是我想了太多方法来实现,最后都因为这因为那的原因失败了间接说明自己对可变与不可变类型
- 实例如下所示:#########start 获取文件路径、文件名、后缀名############def jwkj_get_filePath_
- 前言在翻Golang官方库的过程中,发现一个有趣的库golang.org/x/time ,里面只有一个类rate,研究了一下发现它是一个限流
- 主要用到的工具:Pandas 、fuzzywuzzyPandas:是基于numpy的一种工具,专门为分析大量数据而生,它包含大量的处理数据的
- Windows下MySQL的安装和删除,供大家参考,具体内容如下安装Mysql1 下载mysql下载地址1;下载地址22 安装教程2.1配置
- 1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 m
- 变量作用域变量由作用范围限制分类:按照作用域分类全局(global):在函数外部定义局部(local):在函数内部定义变量的作用范围全局变量
- 前几天遇到一个问题,需要把网页中的一部分内容挑出来,于是找到了urllib和HTMLParser两个库.urllib可以将网页爬下来,然后交
- 一、基本介绍在编程中,程序员会经常使用到日期相关的函数,比如:统计某段代码执行花费的时间等等。在 Go 中,开发者为我们提供了 time 包
- 一、简介Shp格式是GIS中非常重要的数据格式,主要在Arcgis中使用,但在进行很多基于网页的空间数据可视化时,通常只接受GeoJSON格
- 1.介绍DeLorean是一个Python的第三方模块,基于 pytz 和 dateutil 开发,用于处理Python中日期时间的格式转换
- 简介mysql的innodb引擎查询记录时在无法使用索引覆盖的场景下,需要做回表操作获取记录的所需字段。mysql执行sql前会执行sql优
- 本文实例讲述了python中的闭包用法。分享给大家供大家参考。具体分析如下:什么是闭包?简单说,闭包就是根据不同的配置信息得到不同的结果再来
- 概要:本文主要描述XHTML中相对定位和绝对定位各自的本质、用法、区别和两者之间的关系。以及使用CSS的Left、Right、Top、Bot
- 一:从版本3.23升级到4.104.10新特性:支持事务处理和存储过程升级过程的注意事项:1:升级采用直接复制安装文件的方法,简单实用,但要
- 毫无疑问,这个世界设计无处不在,优美的设计会得到会心的微笑和由衷的赞赏。然而,想从事设计或在设计边缘的人们未必有机会学习专业的设计。实际上,
- 1. 引言因为在学习遗传算法路径规划的内容,其中遗传算法中涉及到了种群的初始化,而在路径规划的种群初始化中,种群初始化就是先找到一条条从起点
- Application Name(应用程序名称):应用程序的名称。如果没有被指定的话,它的值为.NET SqlClient Data Pro
- 本文实例讲述了Python视频爬虫实现下载头条视频功能。分享给大家供大家参考,具体如下:一、需求分析抓取头条短视频思路:分析网页源码,查找解
- groupcache 简介在软件系统中使用缓存,可以降低系统响应时间,提高用户体验,降低某些系统模块的压力.groupcache是一款开源的