0

spoolは良い方法で出力しようとしているので、すべての VARCHAR2 列を a5 にフォーマットしています。ただし、問題のある列は、SLOTNUMNUMBER(2)FEEADJUSTMENT型と NUMBER(5,2) 型です。私のコードは次のとおりです。

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

4

2 に答える 2

2

ドキュメントにあるように、列ヘッダーの長さを使用しているため:

NUMBER 列の幅は、見出しの幅、または FORMAT の幅に符号用のスペース 1 つを加えた値のいずれか大きい方に等しくなります。

短い名前で列に別名を付けることができます。

select slotnum as slotn, ...

文字列として扱うこともできますが、実際にはエイリアスが必要です。

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

エイリアス is as slotnum、お好みであれば、 を使用することもできますformat a5が、それはあまり明確ではないと思います。

a5特に、列の折り返しを強制する値よりも長い値を持っているため、すべてを「良い」と強制することを説明できるかどうかはわかりません。好みの問題だと思います...

于 2013-06-24T20:43:06.540 に答える
1

これでフォーマット:

column SLOTNUM format a3;
column FEEADJUSTMENT format a5;
于 2013-06-24T20:41:14.510 に答える