oracle中关于小数中0的格式化(55天)

今天碰到一个小问题,分享一下。

oracle中输入0.1查出的时候是.1,现在想把结果格式化成varchar2,格式化成0.10,保留两位精度。

先拿大于1的数试验,没问题

SQL> select to_char(1.1,'99999999.99') from dual;
TO_CHAR(1.1,
------------
        1.10
SQL> c/1.1/.1 
  1* select to_char(.1,'99999999.99') from dual
SQL> /
TO_CHAR(.1,'
------------
         .10

--结果有问题

--貌似可以用这种方式

SQL> select to_char(.1,'999999990.99') from dual;
TO_CHAR(.1,'9
-------------
         0.10

--或者

SQL> select to_char(.1,'fm9999999990.00') from dual;
TO_CHAR(.1,'FM
--------------
0.10

--这样不可以

SQL> select to_char(.12,'fm999999.99') from dual;
TO_CHAR(.1
----------
.12

但是对于上面的两种方法,仔细琢磨一下,会发现 差别还是很大的。

SQL> select to_char(.1,'999999990.99'),length(to_char(.1,'999999990.99')) from dual;
TO_CHAR(.1,'9 LENGTH(TO_CHAR(.1,'999999990.99'))
------------- ----------------------------------
         0.10                                 13

SQL> select to_char(.1,'fm9999999990.00') ,length(to_char(.1,'fm9999999990.00')) from dual;
TO_CHAR(.1,'FM LENGTH(TO_CHAR(.1,'FM9999999990.00'))
-------------- -------------------------------------
0.10                                               4

--用符合隔开来分辨。

SQL> select '>>'||TO_CHAR(123.1,'FM99999.99')||'<<','>>'||TO_CHAR(123.1,'9999.99')||'<<' from dual;
'>>'||TO_CHAR '>>'||TO_CHA
------------- ------------
>>123.1<<     >>  123.10<<

第二种会有隐式的分隔。

所以根据具体的需要还是要区别对待,

默认保险起见还是用如下的方式

SQL> select to_char(.1,'fm9999999990.00') ,length(to_char(.1,'fm9999999990.00')) from dual;
TO_CHAR(.1,'FM LENGTH(TO_CHAR(.1,'FM9999999990.00'))
-------------- -------------------------------------
0.10                                               4
这样就可以自动去除前面的空格。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2014-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

【数据库】MySQL进阶八、多表查询

【数据库】MySQL进阶八、多表查询 MySQL多表查询 一 使用SELECT子句进行多表查询 SELECT 字段名 FROM 表1,表2 … WHERE ...

4164
来自专栏Python数据科学

【SQL刷题系列】:leetcode177 Nth Highest Salary

【SQL刷题系列】:leetcode183 Customers Who Never Order

801
来自专栏Java架构沉思录

谈谈Mysql索引优化不得不提防的坑

前言 在之前的文章《聊聊Mysql优化之索引优化》中,笔者简单介绍了Mysql索引优化的原理和一些使用场景,然而Mysql索引优化的内容还远远不止这些。在实际工...

3406
来自专栏杨建荣的学习笔记

MySQL执行计划里面的key_len

以前看MySQL的执行计划,感觉内容有些简陋,平时分析主要就是看是否全表扫描,索引使用是否合理等。基本上也能分析出很多问题来,但是显然有时候会有些疑惑,那就...

3506
来自专栏数据库

渗透测试中常用的SQL命令基础指南

作为渗透测试人员,仅仅利用漏洞攻击目标然后获得一个Shell是远远不够的。尽管拿到Shell是一件很好的事情(毕竟这是我们渗透测试中非常重要的一部分),但是对客...

3308
来自专栏Jackson0714

【T-SQL基础】03.子查询

3056
来自专栏数据库

mysql总结(一)

一、数据库管理 1.1查询所有数据库 mysql> show databases; +--------------------+ Database +-----...

1966
来自专栏idba

再说order by 优化

一 前言 为什么是再说呢?因为前面已经写过 《order by 原理以及优化》 ,介绍order by 的基本原理以及优化。如果觉得对order by原理了...

842
来自专栏面朝大海春暖花开

解决mysql中limit和in不能同时使用的问题

两种方式推荐第一种。避免了in语句。进行explain诊断会发现第一种效率高很多。

722
来自专栏猿人谷

mysql索引使用技巧及注意事项

一.索引的作用       一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂...

2947

扫码关注云+社区