2012-02-10 188 views
2

這個實際上非常簡單,但我無法找到任何有用的東西。Oracle to_char函數具有任意精度和一定比例的數字格式

在我的SQL查詢中,我有一些舍入的數字和一個比例值 - round(number,1)。如果數字四捨五入到十進制數字,它將以'9,9'格式打印。

另一方面,如果將數字四捨五入爲整數,則只會打印逗號後沒有零的整數值,儘管我希望我的查詢選擇'9,9'格式的數字,即使十進制數字爲零。

總之,我想,我需要這樣的東西,例如

to_char((select round(121.01,1), from dual), '*,1') ;輸出121,0

這樣做的最好方法是什麼?在此先感謝

Korhan

回答

3

所有你需要做的就是指定你to_char你想小數點數。使用格式掩碼的問題是,您需要在小數點前面指定所需的數字數。

SQL> select to_char(round(121.01,1),'999.9') from dual; 

TO_CHA 
------ 
121.0 

SQL> select to_char(round(121.4,1),'999.9') from dual; 

TO_CHA 
------ 
121.4 

SQL> select to_char(round(121,1),'999.9') from dual; 

TO_CHA 
------ 
121.0 

SQL> select to_char(round(5121,1),'999.9') from dual; 

TO_CHA 
------ 
###### 

SQL> 

還有其他一些formatting options

2

使用代替的小數位:

SELECT TO_CHAR(ROUND(121.01, 1), '990D0') num FROM DUAL; 

NUM 
------ 
121.0 
+0

如果您想要以任意精度(但以固定比例)顯示數字,可以使用此格式掩碼:''FM9G999G999G999G990D0''(或更長)。 – 2012-02-10 10:31:37

2

這個簡單的查詢可以幫助你,

select to_char(round(121.01,1), '999.0') from dual; 

TO_CHAR功能:

9 - 表示阻止/隱藏輸出中的零。

0 - 指示在小數點之前/之後任何位置的輸出中顯示零。

注:在之前的「9/0的

號/後小數點是要小數點後顯示beore /位數。