项目中碰到了个问题,本来报表需要显示“0.49%”,结果就是显示成“.49%”
找问题
首先在pl/sql工具里执行sql,发现原始的数据就是“.49%”,那么问题来了,原始sql的问题,跟工具无关了。
因为.49和“%”是通过字符串拼接的形式合成的,oracle中存在一个隐形类型转换的问题,在拼接的过程中小数自动转成字符类型,相当于调用了to_char函数。
在类型隐形转换开始前先把小数转换成字符类型就不回出现这个问题了。
如:
select to_char(0.12,'fm9999990.9999') || '%' from dual;
给小数一个格式然后转换为字符类型可以解决这个问题。