解決Oracle出現以0開頭的小數,開頭的0消失的問題


項目中碰到了個問題,本來報表需要顯示“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了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM