Skip to content

USER_COLUMNS

功能描述

user_columns系统视图用于存储和管理表字段信息。

字段说明

字段名类型说明
DB_IDOID_TYPE库ID
TABLE_IDOID_TYPE表ID
COL_NOINTEGER字段序号
COL_NAMEVARCHAR字段名
TYPE_NAMEVARCHAR类型名
SCALEINTEGER数据尺寸
IS_HIDEBOOLEAN是否隐藏
DELETEDBOOLEAN是否删除
VARYINGBOOLEAN是否变长(对char binary有效)
NOT_NULLBOOLEAN是否可为空
IS_SERIALBOOLEAN是否为序列值
SERIAL_IDOID_TYPE序列值发生器的ID号
TIMESTAMP_T CHAR1时间戳类型('i':仅在插入时计值;'u': 更改时计值)
COLLATORVARCHAR校验器名
DEF_VALVARCHAR1024默认值
DOMAIN_IDOID_TYPEDOMAIN_ID号
IS_VIRTUALBOOLEAN该字段是否是虚字段
COMMENTSVARCHAR注释信息
REPET_RATEDOUBLE重复率
DISPERSIONDOUBLE离散度
MAX_VALVARCHAR1024最大值
MIN_VALVARCHAR1024最小值
HISTOGRAMCLOB柱状图
ANA_FLAGTINYINT分析控制标记
RESERVED1VARCHAR保留字段
RESERVED2VARCHAR保留字段
RESERVED3VARCHAR保留字段

SCALE

numeric、decimal、interval等类型精度和标度计算规则如下:

  • 精度(PRECISION): (scale/65536)::INT
  • 标度(SCALE): MOD(scale,65536)

示例

  • 查询表列信息

    sql
    SQL> CREATE TABLE col_info(id INT,name CHAR,col1 VARCHAR(10),col2 NUMERIC(32,6),col3 INTERVAL YEAR TO MONTH);  
    
    SQL> SELECT st.table_name,sc.col_no,sc.col_name,sc.type_name,scale,(sc.scale/65536)::INT precision,MOD(sc.scale,65536) scaler,"VARYING",not_null FROM user_columns sc JOIN user_tables st ON sc.db_id=st.db_id AND sc.table_id=st.table_id WHERE st.table_name='COL_INFO';
    
    TABLE_NAME | COL_NO | COL_NAME | TYPE_NAME | SCALE | PRECISION | SCALER | VARYING | NOT_NULL | 
    ------------------------------------------------------------------------------
    COL_INFO| 0 | ID| INTEGER| -1 | 0 | -1| F | F |
    COL_INFO| 1 | NAME| CHAR| 1 | 0 | 1| F | F |
    COL_INFO| 2 | COL1| CHAR| 10 | 0 | 10| T | F |
    COL_INFO| 3 | COL2| NUMERIC| 2097158 | 32 | 6| F | F |
    COL_INFO| 4 | COL3| INTERVAL YEAR TO MONTH| 524288 | 8 | 0| F | F |
    
    SQL> SELECT (2097158/65536)::INT AS 精度,MOD(2097158,65536) as 标度 FROM DUAL;
    
    精度 | 标度 | 
    ------------------------------------------------------------------------------
    32 | 6|
  • 查询表精度和标度

相关系统表

  • sys_databases
  • sys_schemas
  • sys_tables