首页 数据库 mysql教程 oracle保留两位小数解决方案

oracle保留两位小数解决方案

Jun 07, 2016 pm 05:55 PM
保留 小数

公司需要处理一些报表,需要使用百分率,保留2位小数,只用round和trunc函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用round即可

公司需要处理一些报表,需要使用百分率,保留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), '.') 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;

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

javascript怎么将整数转为小数 javascript怎么将整数转为小数 Nov 03, 2021 pm 05:59 PM

在javascript中,可以利用toFixed()函数来将整数转为小数,该函数能够把整数转换为指定小数位数的数字;语法“number.toFixed(x)”,参数“x”规定小数的位数。

Python的round()函数:保留指定位数的小数 Python的round()函数:保留指定位数的小数 Nov 18, 2023 pm 05:35 PM

Python的round()函数:保留指定位数的小数,需要具体代码示例概述:在Python编程中,经常需要对浮点数进行四舍五入,以保留指定位数的小数。为了解决这个问题,Python提供了round()函数。本文将介绍round()函数的用法,并提供一些具体的代码示例。round()函数的用法:round()函数是Python内置的一个函数,用于对浮点数进行四

艾尔登法环二周目会保留什么 艾尔登法环二周目会保留什么 Mar 11, 2024 pm 02:31 PM

玩家在艾尔登法环中进行游戏时在通关后还可以开启二周目,有很多玩家不知道二周目会保留什么,二周目时和人物的属性,战斗力相关的东西都会保留。艾尔登法环二周目会保留什么1、二周目只会继承等级、装备和道具。2、艾尔登法环二周目的等级,装备,武器,祷告,魔法,骨灰,护符,滴露,战灰等都是会保留的。3、可以简单理解为装备列表的所有东西,都是保留的,包括武器的强化等级。4、所有的篝火,剧情相关道具不会继承,地图上的收集元素不保留,大卢恩不会保留。

Win11升级会保留原软件的详细信息吗? Win11升级会保留原软件的详细信息吗? Dec 31, 2023 pm 02:49 PM

软件是我们在使用电脑时最重要的部分,本质上一般人使用电脑就是为了使用这些软件,因此如果升级win11会清除软件将会带来很大的不便。不过如果我们能够正常升级win11,其实是会保留所有软件的,大家不需要担心,下面就一起来看一下吧。升级到win11软件会保留吗答:所有软件都会保留。1、在官方的Q&A中,微软就表示了升级到win11会保留所有的文件和数据,其中当然也包括了所有的软件。2、因此,大家可以放心地升级win11系统。3、不过这其实并不代表我们可以完全不对重要文件进行备份。4、因为win11毕

如何只保留win10专业版镜像 如何只保留win10专业版镜像 Jan 02, 2024 pm 06:37 PM

有些用户在操作下载安装win10系统的时候都会遇到一些问题,比如说安装变成专业版,这个时候我们可以去自己下载你想要的系统版本来进行使用,重新安装一下就可以了。win10镜像只保留专业版怎么办答:可以去重新安装一个系统版本。这里推荐选择浆果一键装机,可以直接下载安装软件以后选择你想要的系统版本然后进行选择就可以了。1、点击后面的蓝色字体就可以进入到下载页面了。>>>2、进入以后下载好软件然后进行操作,详细的步骤可以查看这一篇文章。>>>win10专业版和家庭版哪个好答:看

php怎么处理小数?多种方法介绍 php怎么处理小数?多种方法介绍 Mar 28, 2023 pm 03:45 PM

PHP是Web开发中最流行的编程语言之一。在PHP中,小数的处理是非常重要的,因为在实际的编程工作中,我们经常需要对小数进行精确运算。本文将介绍几种处理小数的方法,以便更加高效地进行小数运算。

驾驭PHP BCMath扩展:开启高精度数学的大门 驾驭PHP BCMath扩展:开启高精度数学的大门 Feb 23, 2024 am 09:22 AM

PHPBCMath扩展是php标准库中一个强大的工具,它提供了丰富的函数库,能够处理大数字、小数和分数等复杂的计算。与PHP内置的数学运算符和函数相比,BCMath扩展能够提供更高的精度和更广泛的运算范围,从而满足各种科学、工程和金融等领域的高精度数学计算需求。为了使用BCMath扩展,您需要在PHP脚本中包含以下代码:其中,bcscale()函数用于设置小数点后的位数,默认值为0,表示不保留小数。您可以根据需要调整此值以控制计算精度

将以下内容翻译为中文:在C程序中打印1/n的前k位小数,其中n是一个正整数 将以下内容翻译为中文:在C程序中打印1/n的前k位小数,其中n是一个正整数 Aug 28, 2023 pm 07:29 PM

输入数字N,这样1/N将返回以十进制指定的形式生成的输出,直到达到限制。使用浮点数很容易,但挑战在于不使用它们。输入−n=5k=5输出−20000这意味着如果n=5且k=5除以1/5后的输出应显示至小数点后5位。算法StartStep1->Declareintvariablento9andkto7andremainto1andiStep2->Loopforito0andi<kandi++  Print((10*remain)/n)&n

See all articles