转自:http://blog.itpub.net/11320622/viewspace-700469/
select round(a1/a2*100,4)||'%' from rep_evdo
结果是:
-.4449% (应该是-0.4449%,整数位的0没显示)
-1.4662%
正确的实现方式:
select concat(to_char(round(a1/a2*100,4),'fm990.9999'),'%') from rep_evdo t;
-0.4449%
-1.4662%
fm表示去掉空格和后面的占位0
0表示在对应位置返回对应的字符,如果没有则以'0'填充.
9 表示在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符.
select to_char(.516,'fm999999990.9999999') from dual t; -- 0.516
select to_char(.516,'999999990.9999999') from dual t; -- 0.5160000 前面有空格,fm的作用就是去掉前面空格和后面的占位0
select to_char(.516,'fm999999990.000000') from dual t; -- 0.516000
SELECT to_char(2,'fm00') FROM dual; -- 02
SELECT to_char(2,'fm9990.000000') FROM dual; -- 2.000000
SELECT to_char(2,'fm9990.999999') FROM dual; -- 2. fm去掉前面的空格,同时还去掉了小数位的占位0
SELECT to_char(2,'9990.999999') FROM dual; -- 2.000000
SELECT trim(to_char(2,'9990.999999')) FROM dual; -- 2.000000 trim可以去掉前面的空格,并且保持勒后面的占位,避免 2. 没有 小数位0的情况
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pmj888666/archive/2010/09/19/5895044.aspx