關於 SQL查詢時,使用to_char函數將數字轉為指定有效位數小數時 這件小事兒


前言

今天遇到一個bug,是使用to_char函數將數字轉為兩位有效小數的字符串,sql語句的大意是

select to_char(20,'0.00')  || '%' from dual;

我想要的結果是20.00%,結果輸出為 #####%,想破腦闊也沒想明白什么情況,查了一下資料,當做筆記記錄一下

to_char(param1,param2) 匹配的時候,param1的整數位數要小於等於param2的整數位數,所以這種情況要寫成

方法一

select to_char(20,'000.00')  || '%'  from dual;

這樣的輸出結果就是20.00%。

但是這種寫法會有一個問題,param1的位數是可變的,如果param1的值是一位數,比如2,這時輸出結果就是002.00%,並且超過3位數還是輸出######%,顯然這個不是我們要的結果。

方法二

select to_char(20,'999.00')  || '%'  from dual;

這種方式會輸出 (空格)20.00%,他會將前面的0換成空格,有這種需求的伙伴可以用這種方式,但是param1的整數位數要大於param2的整數位數還是會輸出 #####%。

方法三

select to_char(20,'FM999.00')  || '%'  from dual;

這樣就可以去除空格,輸出20.00%,但是param1的整數位數要大於param2的整數位數還是會輸出 #####%。

 

因為我這算法不會有太大的位數,所以格式為‘FM999.00’就夠用的,大家如果使用的話可以根據自己的需求適度增加9的個數。


免責聲明!

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



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