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 的宽度加上一个符号空格,以较大者为准。

您可以使用较短的名称为列命名:

select slotnum as slotn, ...

您也可以将其视为字符串,但您仍然需要一个别名:

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

slotnum如果您愿意,您可以别名为 as和 use format a5,但我认为这不太清楚。

我不确定我是否会将强制所有内容描述a5为“不错”,尤其是当您的值比强制列换行的值更低时。口味问题,我想...

于 2013-06-24T20:43:06.540 回答
1

用这个格式化:

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