oracle小数点前零丢失的问题
2016-04-10 20:08
344 查看
参考:http://my.oschina.net/ulyn/blog/103790
1.问题起源
oracle 数据库
字段值为小于1的小数时,使用varchar2类型处理,会丢失小数点前面的0
例如0.73就变成了.73
2.解决办法:
(1)用to_char函数格式化数字显示
select to_char(0.73,'fm9999999990.00') from test;
结果:0.73
这里重点要看 fm9999999999.99,表示整数部分最多10位,小数部分2位,fm表示去 掉转位字符串后前面的空格,不加fm,0.73前面会有空格的.
(2)使用decode函数
既然小于1的小数首位必然是'.',那就判断首位是否为'.',是则在前面加上'0'即可
SQL> select decode(substr(num,1,1),'.','0'||num,num) from t1_number
DECODE(SUBSTR(NUM,1,1),'.','0'||NUM,NUM)
(3)使用to_number函数(这是附加的)
select TO_NUMBER(T1.INVENTORYDIESELCNOOC)
from test t1
![](https://img-blog.csdn.net/20160410200646902?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
;
1.问题起源
oracle 数据库
字段值为小于1的小数时,使用varchar2类型处理,会丢失小数点前面的0
例如0.73就变成了.73
2.解决办法:
(1)用to_char函数格式化数字显示
select to_char(0.73,'fm9999999990.00') from test;
结果:0.73
这里重点要看 fm9999999999.99,表示整数部分最多10位,小数部分2位,fm表示去 掉转位字符串后前面的空格,不加fm,0.73前面会有空格的.
(2)使用decode函数
既然小于1的小数首位必然是'.',那就判断首位是否为'.',是则在前面加上'0'即可
SQL> select decode(substr(num,1,1),'.','0'||num,num) from t1_number
DECODE(SUBSTR(NUM,1,1),'.','0'||NUM,NUM)
(3)使用to_number函数(这是附加的)
select TO_NUMBER(T1.INVENTORYDIESELCNOOC)
from test t1
;
相关文章推荐
- 【Oracle】4.约束
- Oracle11g 新特性 虚拟列
- Oracle VM + centos7.1+openstack kilo 多结点安装教程---基础环境配置(4)
- 【Oracle】3.模糊查询
- 【Oracle】2.92与99语法差异化比较
- 【Oracle】1.安装和配置
- 谷歌希望让 Swift 成为安卓的优先选择,以取代由 Oracle 开发的 Java 程序语言。
- 读收获不止oracle--表设计有感
- 传说中的oracle的java证书这个样子!
- sqlldr入库Oracle
- Oracle--单行函数(字符函数、数字函数、日期函数、转换函数、通用函数)
- 怎样让oracle实验本在不做实验时性能提升——win7下举例
- oracle数据库乱码
- Oracle跨表空间导出导入数据
- Oracle 创建普通用户,并赋予权限
- oracle学习 第一章 简单的查询语句 ——03
- 分页数据有重复的问题
- 往Oracle数据库中插入日期型数据(to_date的用法)
- oracle学习 第一章 简单的查询语句 ——02
- 6、索引与索引组织表