FOR re IN (SELECT t.province,t.diffVlaueContain0,t.diffCountContain0,t.diffVlaueNotContain0,t.diffCountNotContain0 FROM ARREPORT_SHIPTO_DIFF_TEMP t order by to_number(t.diffCountNotContain0) desc,to_number(t.diffVlaueNotContain0) desc) LOOP
--拼接需要邮件展示的table中的tr
v_tr_str := v_tr_str || '<tr><td>' || re.province ||'</td><td>' || to_char(re.diffVlaueContain0,'fm9999999990.000') ||'</td><td>' || re.diffCountContain0 ||'</td><td>' || to_char(re.diffVlaueNotContain0,'fm9999999990.000') ||'</td><td>' ||re.diffCountNotContain0 ||'</td></tr>';
END LOOP;
在进行取值的时候,数据0.23这种,如果直接使用re.diffVlaueContain0 ,那么获取的数据就是.23,最前边的0不见了,在plsql中测试,使用to_number好用,但是在此处用to_number还是不好用,最后还是想想用to_char格式化吧。
在格式参数FMT中,前面加上FM代表去掉返回结果中的前后空格和0。
'fm9999999990.000' 小数点前的一个0保证了,0.23这种格式可以正确显示,
开始的使用使用的是'fm9999999990.999',但是0的话就显示成了0.
所以最后改成了统计将0显示为0.000了。

本文介绍在PLSQL中使用TO_CHAR函数格式化数值数据的方法,特别是针对小数点前带有0的情况,如0.23。通过调整TO_CHAR的格式参数,解决了直接获取数据时0丢失的问题。
801

被折叠的 条评论
为什么被折叠?



