表中的VARCHAR2长度不匹配Oracle中的描述

时间:2015-08-06 01:24:51

标签: oracle

只是想知道哪个表oracle存储了使用以下命令显示的表描述

DESC DEV_WWM_WEBAPP_SIT1.WORKORDERSPEC

输出:

DESC DEV_WWM_WEBAPP_SIT1.WORKORDERSPEC
Name                 Null     Type                
-------------------- -------- ------------------- 
WORKORDERSPECID      NOT NULL NUMBER              
**ALNVALUE                      VARCHAR2(4000 CHAR)** 
ASSETATTRID          NOT NULL VARCHAR2(100)       
WONUM                NOT NULL VARCHAR2(15)        
CHANGEBY             NOT NULL VARCHAR2(30)
**NBNTARGETOBJECT               VARCHAR2(30 CHAR)   
NBNTARGETATTRIBUTE            VARCHAR2(50 CHAR)**    
CHANGEDATE           NOT NULL DATE                
CLASSSTRUCTUREID     NOT NULL VARCHAR2(20)        
DISPLAYSEQUENCE      NOT NULL NUMBER              
LINKEDTOATTRIBUTE             VARCHAR2(100)       
LINKEDTOSECTION               VARCHAR2(20)        
MEASUREUNITID                 VARCHAR2(25)        
NUMVALUE                      NUMBER(30,10) 

我使用了以下内容,但在VARCHAR2数据类型中可能会看到长度不匹配为突出显示

Decription

1 个答案:

答案 0 :(得分:4)

ALL_TABLES和ALL_TAB_COLUMNS应该足以检索表结构上的任何元信息。根据{{​​3}} ALL_TAB_COLUMNS.DATA_LENGTH显示长度(以字节为单位)和ALL_TAB_COLUMNS.CHAR_LENGTH(根据应用于列的长度语义的字符。

在查询中使用而不是DATA_LENGTH DECODE(char_used,'C',char_lenght,data_lenght) data_length

另外要注意 select * from database_properties where PROPERTY_NAME in ('NLS_CHARACTERSET')。字节数取决于字符集。

30(字符)x 4(每个字节)= 120(字节)

所以我猜你的数据库使用AL32UTF8字符集作为默认字符集。