項目中碰到了個問題,本來報表需要顯示“0.49%”,結果就是顯示成“.49%”
找問題
首先在pl/sql工具里執行sql,發現原始的數據就是“.49%”,那么問題來了,原始sql的問題,跟工具無關了。
因為.49和“%”是通過字符串拼接的形式合成的,Oracle中存在一個隱形類型轉換的問題,在拼接的過程中小數自動轉成字符類型,相當於調用了to_char函數。
在類型隱形轉換開始前先把小數轉換成字符類型就不回出現這個問題了。
如:
select to_char(0.12,'fm9999990.9999') ||'%' from dual;
給小數一個格式然后轉換為字符類型可以解決這個問題。
當然此方法還可以解決強制性保留幾位小數位,比如,‘0.5’,怎么讓它變成 ‘0.5000’,很簡單,上面的方法就可以用
select to_char(0.5,'fm9999990.0000') ||'%' from dual;
有時候我們也會遇到1,2,3 需要轉換為01,02,03 那么也可以使用這種方法
SELECT to_char(2,'fm00') FROM dual;
2就會變為02了
