oracle中关于小数中0的格式化(55天)
发布日期:2021-06-30 13:28:31 浏览次数:2 分类:技术文章

本文共 1082 字,大约阅读时间需要 3 分钟。

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

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

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

SQL> select to_char(1.1,'99999999.99') from dual;

TO_CHAR(1.1,

SQL> c/1.1/.1

TO_CHAR(.1,'

--结果有问题

--貌似可以用这种方式

SQL> select to_char(.1,'999999990.99') from dual;

TO_CHAR(.1,'9

--或者SQL> select to_char(.1,'fm9999999990.00') from dual;

TO_CHAR(.1,'FM

--这样不可以

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

TO_CHAR(.1

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

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

转载地址:https://jeanron100.blog.csdn.net/article/details/102506801 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:关于primary key和unique index的奇怪问题 (58天)
下一篇:当程序员看到美女之后?一个社会工程学的案例(转)

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年05月01日 06时46分01秒