Oracle数据库中查询结果集中保留两位小数的问题

oracle保留两位小数解决方案 公司需要处理一些报表,需要使用百分率,保留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||’ 立即下载

工作中遇到的Oracle数据库字段格式化问题,在此记录 
保留两位小数主要分为两种情况: 
1.数字保留两位小数;(小数点左侧数字可能比较大,比如1234567890.12) 
2.百分比保留两位小数;(小数点左侧数字数字小于等于100,比如98.76%)

现针对Oracle数据库做以下示例:
在开始之前,先介绍一下Oracle函数大全中的转换函数to_char( )

TO_CHAR(x[[,c2],C3])
【功能】将日期或数据转换为char数据类型
【参数】
x是一个date或number数据类型。
c2为格式参数
c3为NLS设置参数                      //不常用

c2格式参数中常用的替换符0和9,分别代表如下含义:

0:零,在对应位置返回对应的字符,如果没有则以’0’填充。
9:在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符. 
二者最大的区别是:对应位没有则填0,而9不填充字符; 
二者共同点:如果格式的位数不如数字的位数多,则返回‘#’
1.数字保留两位小数:
通过拼接语句来模拟数据库表中的列,如下: 
select result,
       to_char(result, '9999.99') as "9的位数不足",
       to_char(result, '9999999999.99') as "9的位数充足",
       to_char(result, '0000.00') as "0的位数不足",
       to_char(result, '0000000000.00') as "0的位数充足",
       to_char(result, '9999999990.00') as "0的位数充足",
       trim(to_char(result, '9999999990.00')) as "9的位数充足且去掉左侧"
from (
    select 0 result from dual union
    select 1 result from dual union
    select 123 result from dual union
    select 123.4 result from dual union
    select 12345.67 result from dual union
    select 12345678.2 result from dual
)
结果集如下: 
 è¿éåå¾çæè¿°
通过结果集可以看出 
【对应位没有则填0,而9不填充字符】, 
【9在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符.】 
【如果格式的位数不如数字的位数多,则返回‘#’】 
此外还有当结果为0时,默认是省略整数位0,这明显不是我们想要的,此时可以在格式字符串的小数点左侧即个位上写0,后两列的查询结果就正常了; 
倒数第二列每个数字的左侧都有大量的空白字符(被占位符9替换来的),此时可以使用trim( )函数将字符串左侧空白去掉,所以最终的写法是 
【 trim(to_char(result, ‘99999999999990.00’)) as “9的位数充足且去掉左侧” 】

2.百分比保留两位小数:


通过语句拼接,模拟数据库表中计算字段

select result from (
    select 0 result from dual union
    select 1 result from dual union
    select 0.12345 result from dual union
    select 0.2 result from dual union
    select 0.23 result from dual union
    select 0.234 result from dual union
    select 0.2345 result from dual union
    select 0.23454 result from dual union
    select 0.23456 result from dual
)
查询结果: 

è¿éåå¾çæè¿°
要把结果集result*100然后保留两位小数,并进行四舍五入,且在后面添加个‘%’,SQL语句如下:

select result,
       to_char(result * 100, '99.99') || '%' as "9位数不足",
       to_char(result * 100, '00.99') || '%' as "0位数不足",
       to_char(result * 100, '99990.99') || '%' as "百分比",
       trim(to_char(result * 100, '99990.99')) || '%' as "去左侧空格的百分比",
       to_char(result * 100, 'fm99990.99') || '%' as "使用fm前缀的格式百分比",
       to_char(result * 100, 'fm99990.00') || '%' as "使用fm前缀的格式百分比2"
from (
    select 0 result from dual union
    select 1 result from dual union
    select 0.12345 result from dual union
    select 0.2 result from dual union
    select 0.23 result from dual union
    select 0.234 result from dual union
    select 0.2345 result from dual union
    select 0.23454 result from dual union
    select 0.23456 result from dual
)
结果集如下: 

è¿éåå¾çæè¿°
从结果集中可以看出:第4,5,7三列都是可以正常查询出结果的,第4列左侧有空白字符,第5列使用trim( )函数去空,第7列使用了fm前缀直接起了去空的效果; 
9的特性是小数点右侧用0替换,左侧没有则填充空白,但是使用了fm前缀后,小数点右侧的9占位符替换成的0就没有了,而0的特性是对应位置如果没有数据则替换成0,因此格式字符串修改为‘fm990.00’这样的; 
最终这两种都可以: 
【trim(to_char(result * 100, ‘99990.99’)) || ‘%’ as “去左侧空格的百分比”】 
【to_char(result * 100, ‘fm99990.00’) || ‘%’ as “使用fm前缀的格式百分比2”】

--------------------- 

大语言模型应用指南:幻觉和偏见问题 大语言模型应用指南:幻觉和偏见问题 1. 背景介绍 1.1 大语言模型的发展历程 1.1.1 早期的语言模型 1.1.2 Tr 阅读详情

相关推荐

第十六届蓝桥杯大赛软件赛(编程类)知识点大纲

难度:[1-3]难度:[1-5]难度:[1-3]难度:[2-5]难度:[1-5]

Future_yzx的博客 4111

oracle当中怎么保留两位小数

round:四舍五入(最多保留两位,没有小数的时候不展示) trunc:直接截断(最多保留两位,没有小数的时候不展示) 不管有没有小数都是保留两位,替换0.8即可使用。

怪咖@的博客 5万+

SDRAM控制器——添加读写FIFO

用FIFO实现数据缓存

H19981118的博客 2624

oracle 保留两位小数

在Oracle中保留两位小数,可以根据实际需求选择ROUNDTRUNC或TO_CHAR函数。ROUND函数适用于需要四舍五入的情况,TRUNC函数适用于需要直接截断的情况,而TO_CHAR函数则提供了更灵活的格式化选项。

weixin_41203765的博客 7506

【ISAR成像】基于Matlab的飞机点目标模型仿真与图像优化

本文详细介绍了如何使用Matlab进行ISAR成像仿真,重点讲解了从构建飞机点目标模型到生成清晰图像的完整流程。通过模拟雷达回波、距离压缩、运动补偿及方位压缩等核心信号处理步骤,并结合相位梯度自聚焦等优化技巧,有效提升了ISAR图像的清晰度与分辨率。文章还分享了雷达参数调优、加窗处理等实战经验,为雷达信号处理与目标识别研究提供了实用指导。

weixin_29071809的博客 388

C++面试八股文

和静态多态(又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数),其中动态多态是通过虚函数实现的,虚函数是类的成员函数,存在存储虚函数指针的表叫做虚函数表,虚函数表是一个存储类成员虚函数的指针,每个指针都指向调用它的地方,当子类调用虚函数时,就会去虚表里面找自己对应的函数指针,从而实现“谁调用、实现谁”从而实现多态。而C++符号表中的符号不是以函数名命名的,称为函数名修饰规则,虽然函数名相同,但是函数参数等其他属性不同,取的符号也不同,所以不会产生查询歧义的问题,使得函数可以重载。

qq_46676829的博客 904

oracle 数据保留两位小数(祥解ROUND()TRUNC(),TO_CHAR( number, ‘格式’ )函数)

在开发中经常会去进行一些计算,遇到除法经常会遇到除不尽的情况,当然各个公司要求不同,处理方式不一样,所要求精度也不一样。整理下oracle自带保留两位小数常用函数: 1ROUND( number, [ decimal_plaes ] ) ROUND()函数是四舍五入的方法,即传回一个数值,该数值是按照指定的小数位元数进行四舍五入运算的结果。number用于指定取整精度的数字;decimal_plaes 需要保留的小数位数,默认值为 0。 使用:SELECT ROUND( number, [ dec..

HY845638534的博客 3万+

【AI编程】Claude Code 最强AI 编程利器项目实战详解

Claude Code 最强AI 编程利器项目实战详解

congge 7392

Oracle数据库中数据保留两位小数点的方法

个人认为比较方便的一种: 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)...

prxhlirr的博客 5472

IgH EtherCAT 从入门到精通:第 30 章 实战:高可用 EtherCAT 系统设计

摘要:构建高可用EtherCAT系统的关键技术 本章详细介绍了工业级EtherCAT系统的高可用性设计方法,主要包括: 冗余链路架构:采用双网卡环形拓扑设计,主备网卡同时工作,通过IgH Master的冗余配置实现线缆故障自动切换。 状态监控机制:提供专用API实时监控主备链路状态,包括从站响应数、链路状态和冗余激活标志,形成完整的故障判断矩阵。 自动恢复功能:系统内置FSM架构支持热插拔自动检测和重配置,从站断线/重连时可自动完成状态恢复,同时允许应用层实施安全措施。 这些技术共同构成了生产环境下Ethe

从事嵌入式linux android驱动开发,拥有全栈能力 240

【机器人学】常用的小车底盘运动学模型推导(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对小车底盘运动学模型介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容对于小车的分析,仅仅考虑XY轴的线速度和Z轴的角速度,不考虑和横滚和俯仰的速度,【防盗标记–盒子君hzj】也不考虑Z轴的高度变化【即:车底盘的运动可以用三个独立变量来描述:x轴平动、y轴平动、yaw轴转动】

qq_35635374的博客 1930

Oracle中保留两位小数

在最近的项目开发中,有个业务需求是界面显示的数字需要保留两位小数,目前我想到的解决方法有两种: (1)在写SQL的时候,直接保留两位小数 (2)在java代码里面将查询出来的数进行格式化处理,保留两位小数 先说第一种方案:在SQL中的处理 我使用的oracle数据库,所以有3个函数可以选择,分别是: (1)ROUND(A/B,2) ROUND()函数是会将计算结果进行四舍五入的,如果所需

墨笙弘一 22万+

【原理图PCB专题】Cadence17.4 PCB位号重排与反标

Cadence17.4 PCB位号重排与反标比Cadence16版本更简单一些,那到底如何操作?

一点硬件 1181

Oracle数据库中保留小数点后两位的问题

Oracle数据库中保留小数点后两位的问题 1.数字保留两位小数;(小数点左侧数字可能比较大,比如10000000.12) to_char() 函数转换 答案 select trim(to_char(85.7323232, '9999999990.00')) as 两位小数 from dual; 写法对比 select result, to_char(result, '9999.99') as "位数不足", to_char(result, '9999999999.99')

无间行者 4544

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

c#float取小数点后两位_C# 保留小数点后两位(方法总结)

最简单使用:float i=1.6667f;string show=i.ToString("0.00"); //结果1.67(四舍五入)其他类似方法:string show=i.ToString("F");//"F2","f" 不区分大小写string show=String.Format("{0:F}",i);//也可以为F2,或者"{0:0.00}float j=Math.Round(i,2)...

weixin_35551323的博客 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

oracle保留两位小数 00,oracle保留小数,例如0.00

Oracle小数点保留问题2013-03-03 11:45:49 我来说两句 作者:shm2008520Oracle小数点保留问题如果你在实际应用中需要使用到Oracle小数点保留的问题的话,其实方法很简单我们只用round即可实现(round(_data,2) ),但是如果其格式不工整的话,你就可以使用round即可,以下是网络搜索到的处理方法:www.2cto.com方法一...

weixin_39903375的博客 5391

Oracle保留小数点后两位

在Oracle数据库中,如果你想保留小数点后两位,可以使用ROUND函数或者TO_CHAR函数来实现这一需求。

weixin_43347149的博客 2107

js 小数自动补0_input内强制保留小数点后两位 位数不足时自动补0

input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入需引入jquery包 1.11.2版本1 function xiaoshu(x)2 {3 var f = parseFloat(x);4 var f = Math.round(x*100)/100;5 var s = f.toString();6 var rs = s...

weixin_39542477的博客 3407

Oracle中查询显示格式需要保留小数点后两位

Oracle中查询显示格式需要保留小数点后两位

weixin_44188105的博客 1249

oracle一位数转两位数,请教,oracle保留两位小数,但是它不需要四舍五入并且不能转换为字符...

在Oracle中,sql语句中的函数用于保留两位小数,舍入以保留两位小数在Oracle中,sql语句中的函数用于保留两个小数,而舍入用于保留两个小数;从doubleround(m,n)中选择trunc(1.23856789,2)可以四舍五入为trunc(m,n)并直接丢弃. 舍入Oracle保留两位小数的解决方案方法1: 使用to_char的fm格式to_char(round(data.amoun...

weixin_29073241的博客 3367

Oracle 之 保留两位小数

  项目需要使用百分率,保留2位小数,只用 round 和 trunc 函数都可以实现(round(_data,2) ),只是格式不是很工整,对格式要求不严谨的情况下使用 round 即可。  以下是比较方便的一种 : select decode(n_jg,0,'0.00',trim(to_char(n_jg,'9999999.99'))) from table1   1、如果只是检索,可使...

weixin_33701251的博客 470

关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即:to_char(round(data.amount,2),FM9999999999999999.00) as amount不足之处是,如果数值是0的话,会显示为.00而不是0.00。另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字

博识空间 1万+

mysql数据库和Oracle数据库除法或乘法,结果保留两位小数

在MySQL和Oracle数据库中,当你执行除法或乘法运算并希望结果保留两位小数时,你可以使用各自的内置函数来达到这个目的。

早安,朝气蓬勃的你 1364

oracle查询保留小数点后三位,关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)...

关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其...方法一:使用to_char的fm格式,即:to_char(round(data.amount,2),'FM9999999999999999.00') as amount不足之处是,如果数值是0的话,会显示为.00而不是0.00。另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。解...

weixin_39611208的博客 1145

oracle double 两位小数点,【Oracle】number类型保留小数位

SQL> SELECT2 TO_CHAR(123, '9990.00') A,3 TO_CHAR(5.8, '9990.00') B,4 TO_CHAR(.46, '9990.00') C5 FROM6 dual;A B C---------------- ---------------- -----...

weixin_35439783的博客 4638
上一篇: Oracle中的substr()函数 详解及应用
下一篇: 写好JavaScript条件语句的5个技巧
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值