2013-06-24 23 views
0

我嘗試以很好的方式輸出spool,所以我將所有VARCHAR2列格式化爲a5。 但是,我的問題列是:類型NUMBER(2)的SLOTNUM和類型NUMBER(5,2)的FEEADJUSTMENT。 我的代碼是:如何格式化Oracle中的NUMBER列?

column SLOTNUM format 999; 
column FEEADJUSTMENT format 999.9; 
......... 
column [other VARCHAR2]  format a5; 
select * from allTables; 

結果是:

SLOTNUM DATEV ACTUA NOTES FEEADJUSTMENT TREAT NAME           
------- ----- ----- ----- ------------- ----- -----           
    12 19-JU 19-ju Treat   2.5 12345 Flu            
     N-13 n-13 ment    6  Shot          
       00:00 succe                     
       :00 ssful                      
        l                      

    15 20-JU 20-ju Appar   5.5 12345 Flu             
     N-13 n-13 atus    6  Shot               
       02:00 broke                      
       :00                        

FEEADJUSTMENT正在比它需要更多的空間。爲什麼format 999.9截取FEEADJUSTMENT列?

回答

1

由於它是使用列報頭的長度,as the documentation表示:

數字列的寬度等於標題的寬度或的寬度 格式加上符號的一個空格,以較大者爲準。

您可以用別名一個較短的名稱列:

select slotnum as slotn, ... 

你也可以把它作爲一個字符串,但你還是需要一個真正的別名:

select to_char(slotnum, 'FM9999') as slotn, ... 

你可以別名爲slotnum,如果您願意,並且使用format a5,但我認爲那不太清楚。

我不確定我是否會將所有內容都強制爲a5作爲'nice',特別是因爲您的值比lighger強於列強制列的打包。一個品味的問題,我想...

+0

哦,所以這個規則適用於NUMBER但不是VARCHAR2,doesn是嗎?謝謝!!! – CHEBURASHKA

+0

是的,因爲我有太多的專欄......我只是從'a5'開始,然後我會適當地調整專欄。我希望它看起來不錯 – CHEBURASHKA

1

格式與此:

column SLOTNUM format a3; 
column FEEADJUSTMENT format a5; 
+0

謝謝你的回答+1。但是,這不起作用,它會給#####。檢查此:http://stackoverflow.com/questions/17284092/why-do-i-get-in-the-number-column-after-format-oracle – CHEBURASHKA