对于正常的,可以很容易的转过来:
select to_char(1.2334) from dual;
TO_CHAR(1.2334)
---------------
1.2334
但是下面的就不是我们想要的结果了:
select to_char(0.2334) from dual;
TO_CHAR(0.2334)
---------------
.2334
select to_char(1.00) from dual;
TO_CHAR(1.00)
-------------
1
那么如何处理呢?
使用格式化参数,如990.0099,这样就能使后面有四位小数了,第5位会进行4舍5入。
select to_char(0.23346,990.0099) from dual;
TO_CHAR(0.23346,990.0099)
-------------------------
0.2335
select to_char(1,990.0099) from dual;
TO_CHAR(1,990.0099)
-------------------
1.0000
但是这样还是有问题,大家可以看到前面是有空格的。而且如果位数不够会显示####这样的信息,如:
select to_char(1000.3,990.0099) from dual;
TO_CHAR(1000.3,990.0099)
------------------------
#########
那么如何处理这样的前面有空格,还不能显示的呢?这就需要把格式的数字长度设置为足够大可以处理正常的信息。
select to_char(1000.3,999999999990.0099) from dual;
TO_CHAR(1000.3,999999999990.00
------------------------------
1000.3000
select to_char(1000.3,'FM999999999990.0099') from dual;
TO_CHAR(1000.3,'FM999999999990
------------------------------
1000.30
FM的作用是去掉前面的空格,因为后面的长度决定了格式化后显示的长度,如果前面数字长度不够会用空格进行补位,这样把空格去掉才是我们要的结果。
也可以这样去掉前面的空格:
select ltrim(to_char(1000.3,'999999999990.0099')) from dual;
LTRIM(TO_CHAR(1000.3,'99999999
------------------------------
1000.3000
0与9的区别:
9是会进位的,而0就是有就显示数没有就补0!
select to_char(1000.3,'FM999999999990.0099') from dual;
TO_CHAR(1000.3,'FM
------------------
1000.30
select to_char(1000.3,'FM999990.9990') col01 from dual;
COL01
------------
1000.3000
to_char的其他用法:
select to_char(1222,'0,000.0000') from dual;