为什么这个数据库里面DESC出来的表结构跟all_tab_columns里面不一样

解决方案 »

  1.   

    解析(analysis)一下这个表试试,数据字典是根据系统解析的结构生成的;
    而你desc得到的应该是准确的
      

  2.   

    你的Oracle字符集,是不是采用的中文或者是宽字符集?我使用的US7ASCII,没有类似问题,估计是中文之类字符集造成的。
      

  3.   

    all_tab_columns 里面有个DATA_LENGTH字段你看看
      

  4.   

    SYS@anqing2(rac2)> desc t1
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     OWNER                                              VARCHAR2(30)
     OBJECT_NAME                                        VARCHAR2(128)
     SUBOBJECT_NAME                                     VARCHAR2(30)
     OBJECT_ID                                          NUMBER
     DATA_OBJECT_ID                                     NUMBER
     OBJECT_TYPE                                        VARCHAR2(19)
     CREATED                                            DATE
     LAST_DDL_TIME                                      DATE
     TIMESTAMP                                          VARCHAR2(19)
     STATUS                                             VARCHAR2(7)
     TEMPORARY                                          VARCHAR2(1)
     GENERATED                                          VARCHAR2(1)
     SECONDARY                                          VARCHAR2(1)SYS@anqing2(rac2)> select COLUMN_NAME,DATA_LENGTH from all_tab_columns where table_name='T1'; COLUMN_NAME                    DATA_LENGTH
    ------------------------------ -----------
    OWNER                                   30
    OBJECT_NAME                            128
    SUBOBJECT_NAME                          30
    OBJECT_ID                               22
    DATA_OBJECT_ID                          22
    OBJECT_TYPE                             19
    CREATED                                  7
    LAST_DDL_TIME                            7
    TIMESTAMP                               19
    STATUS                                   7
    TEMPORARY                                1COLUMN_NAME                    DATA_LENGTH
    ------------------------------ -----------
    GENERATED                                1
    SECONDARY                                113 rows selected.
    理论上不一行出现这样的问题。 不过通过你贴的数据看,正好相差3倍。在查询之前指定下字符集,在查询看看。