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 条评论
登录 后参与评论

相关文章

来自专栏Linyb极客之路

MySQL索引设计不可忽视的知识点

本文主要讨论MySQL索引的部分知识。将会从MySQL索引基础、索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开。

654
来自专栏Python

表——完整约束性规则(键)

一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: primary key (PK) 标识该字段为该表的...

2037
来自专栏python3

mysql-完整性约束

mysql> create table tb1(id int not null default 2,num int not null);  # 创建tb1表并约...

641
来自专栏idba

修改字符集的注意那些事儿

最近有开发同学遇到emoji显示问题,表结构是utf8mb4字符集,但是不支持emoji表情字符。我们在解决字符集问题的时候也重新认识了修改字符集操作的...

662
来自专栏FSociety

SQL中查询效率优化

索引是独立于表的一中物理存储结构,当我们语句中用到索引的字段的时候,数据库会首先去索引中查找满足条件的数据的索引值(相当于页码),然后在根据索引值去表中筛选出我...

1603
来自专栏Jackson0714

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

2806
来自专栏数据库

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

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

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

MySQL和Oracle中的隐式转换(r6笔记第45天)

今天在处理一个问题的时候,需要根据其他部门提供的sql语句对一个表中的数据进行了筛查。 语句类似下面的形式 > SELECT MAX_LEVEL,LOGOUT_...

2774
来自专栏数据和云

MySQL - 8种常见的SQL错误用法

前言:MySQL在2016年仍然保持强劲的数据库流行度增长趋势。越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来。...

3614
来自专栏Python数据科学

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

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

481

扫码关注云+社区