oracle拼接小数百分号问题
在oracle的select计算中,经常会用到拼接百分号的问题,但是若结果为0.01的时候,小数点前的0就会经常被舍去。这是因为oracle在拼接%时,用到了隐式转换,例如
select round(5164/88794,2) from dual
结果则为0.06,但是如果
select round(5164/88794,2)||’%’ from dual
则结果为.06%,如果需要把前面的0也显示出来,则需要用到to_char,例如
select to_char(round(5164/88794,2),’fm999990.00’)||’%’ from dual
则结果则为0.06,但是这样之后又会出现一个问题,就是如果小数点前位数已经超过10位数的时候,就会发现,结果变成了#####,这时候又要用到fm这个参数,例如fm99900.00,在有9的地方,如果没有数字,则不会显示;有0的地方,如果没有数字,则显示为0.
这时如果结果为123.456,则会变成123.45,若为6.456,则为06.45.