Oracle小数点保留问题
From:http://database.51cto.com/art/201004/196861.html
如果你在实际应用中需要使用到Oracle小数点保留的问题的话,其实方法很简单我们只用round即可实现(round(_data,2) ),但是如果其格式不工整的话,你就可以使用round即可,以下是网络搜索到的处理方法:
方法一:使用to_char的fm格式,即:
1.to_char(round(data.amount,2),'FM9999999999999999.00') as amount
不足之处是,如果数值是0的话,会显示为.00而不是0.00。
另一需要注意的是,格式中小数点左边9的个数要够多,否则查询的数字会显示为n个符号“#”。
解决方式如下:
1.select decode(salary,0,'0.00', (to_char(round(salary,2),'fm99999999999999.00'))) from can_do;
方法二:使用case when then else end进行各种情况的判断处理:
1.case
2.when instr(to_char(data.amount), '.') <1 then
3.data.amount || '.00'
4.when instr(to_char(data.amount), '.') + 1 = length(data.amount) then
5.data.amount || '0'
6.else
7.to_char(round(data.amount, 2))
8.end as amount_format
方法三:可以使用Oracle自带的参数设置,即
1.column amount format l9999999999.99
此方法的不足是,format中的小数点左面的9的个数要已知,否则会出现超过的数字显示为########的情况。
另外一个Oracle小数点保留问题是,使用column时,设置生效是session级还是system级,需要注意。
也许某张表的数值列不总是要求所有的地方显示时,都是小数点后两位的格式,
此时只能使用session级,但是有个数据库连接会话超时的Oracle小数点保留问题,如果不是使用到system级,不建议使用该方法。
方法四:使用to_char+trim的方式,如下:
1.select trim(to_char(1234,'99999999999999.99')) from dual;
或者
1.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个符号“#”。
如下:
1.select decode(salary,0,'0.00',trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
1.select decode(salary,0,'0.00', ltrim(trim(to_char(salary,'00000000000000.00')),'0')) from can_do;
结论:建议使用方法四中的trim+to_char的方式或者方法一的补救之后的方式,而且最好使用小数点左边n个9的方式,不要使用0的方式,否则,要多一步trim处理。
即:
1.select decode(salary,0,'0.00', trim(to_char(salary,'99999999999999.99'))) from can_do;
或者
1.select decode(salary,0,'0.00', (to_char(round(salary,2),'fm99999999999999.00'))) from can_do;
以上的相关内容就是对Oracle小数点保留问题的介绍,望你能有所收获。
分享到:
相关推荐
4. **精度问题**:在进行小数点处理时需要注意浮点数运算可能带来的精度问题。 #### 五、总结 通过本文的学习,我们了解了Oracle数据库中处理小数点位数的关键函数及其应用场景。正确选择并使用这些函数可以帮助...
- 避免使用CHAR或VARCHAR2类型存储数值,尤其是在需要保留小数点前零的情况下。NUMBER类型更适合存储数值,因为它能正确处理小数点前的零。 - 如果必须使用字符类型,确保使用`TO_CHAR`函数并提供合适的格式模型。...
本案例中,客户提出的需求是备份Oracle数据库,并且要求对导出的`.dmp`文件进行压缩处理,最终只保留指定天数内的备份文件。 ##### 1.2 目标设定 - **目标一:**定期备份Oracle数据库,确保数据安全。 - **目标二:...
本文将详细介绍如何完全卸载Oracle以及在安装时解决网络配置问题。 一、卸载Oracle 1. **停止所有Oracle服务**:在卸载前,必须先确保所有的Oracle服务已停止运行。可以通过服务管理工具或命令行使用`...
在Oracle数据库中,处理数值类型的数据并保留特定的小数位数是常见的需求,尤其是在报表生成和数据分析场景。...理解并熟练掌握这些函数和技巧,能帮助我们在处理Oracle数据库中的数值格式问题时游刃有余。
### Oracle 64位问题详解 #### 一、问题背景 ...如果问题仍然存在,可能需要进一步检查Oracle服务的状态、网络配置以及系统日志等信息。此外,也可以考虑升级到最新的Oracle版本,以获得更好的兼容性和稳定性支持。
解决使用 Oracle 疑难问题 在使用 Oracle 数据库系统时,可能会遇到一些疑难问题,本文将从解决使用 Oracle SQL*PLUS 时没有监听器的问题开始,介绍一些相关的知识点。 标题:解决使用 Oracle 疑难问题 描述:...
ORACLE归档日志设置 ORACLE数据库的归档日志设置是一种重要的机制,旨在保障数据库的安全性和灾难恢复能力。通过设置数据库的日志模式和自动归档模式,可以确保数据库的可靠性和可恢复性。 数据库日志模式的设置是...
部署在IIS上的网站,浏览时:未找到Oracle客户端和网络组件现象
oracle常见问题集锦oracle常见问题集锦
如果网络配置不当,可能会导致数据库连接失败、数据传输慢、网络安全风险等问题。因此,DBA 需要了解 Oracle 网络配置的基本概念和组件,熟练使用网络配置工具,确保 Oracle 数据库的网络连接和通信的可靠性和安全性...
备份oracle数据,只保留最近10天的数据,自动删除旧的数据
oracle配置网络服务名 oracle 添加一个监听器 有截图和说明 oracle 10g
OracleClient-18C是Oracle公司推出的数据库连接客户端软件,主要功能是为应用程序提供与Oracle数据库服务器进行交互的能力。这个版本适用于Windows和Linux操作系统,确保了跨平台的兼容性,使得开发者和系统管理员...
1. **网络问题**:集群节点之间的通信依赖于稳定的网络环境。如果网络连接不稳定或配置错误,可能导致资源状态更新延迟或丢失,从而被标记为"unknown"。 2. **集群资源管理器故障**:CRM负责监控和管理集群中的所有...
此文介绍Oracle Virtualbox Host-Only网络的设置。 虚拟机里的操作系统是oracle linux 7。 创作的kubernetes虚拟机的配置之一。 关于kubernetes虚拟机下载,请参考。 ...
一个用 Oracle 编写货币大写转换(函数不支持转换小数点) 最多可能转换21位数字
在数据库中硬解析是万恶之源,为大家提供一个查找并且定位oracle硬解析问题SQL语句脚本