一个表里面有一个字段,我不知道它定义的长度,怎么把它求出来

解决方案 »

  1.   

    我要用sql把它求出来,可以实现吗?
      

  2.   

    select * from user_tab_columns
    where table_name = 'your_table' and column_name = 'your_column';
      

  3.   

    SQL> desc emp
    Name     Type         Nullable Default Comments 
    -------- ------------ -------- ------- -------- 
    EMPNO    NUMBER(4)                              
    ENAME    VARCHAR2(10) Y                         
    JOB      VARCHAR2(9)  Y                         
    MGR      NUMBER(4)    Y                         
    HIREDATE DATE         Y                         
    SAL      NUMBER(7,2)  Y                         
    COMM     NUMBER(7,2)  Y                         
    DEPTNO   NUMBER(2)    Y                         
     
    SQL> select decode(t.data_precision,null,t.data_length,t.data_precision) from user_tab_cols t where t.table_name='EMP' and t.column_name='EMPNO';
     
    DECODE(T.DATA_PRECISION,NULL,T
    ------------------------------
                                 4
     
    SQL> 
      

  4.   


    select table_name,column_name,data_length
     from user_tab_columns
    where table_name = 'TABLE' and column_name = 'COLUMN';
      

  5.   

    COL DATATYPE FORMAT A20
    COL TABLE_NAME FORMAT A15select TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH from user_tab_cols
    where table_name='TBNAME' AND COLUMN_NAME='COLNAME'
      

  6.   

    varchar2的没问题吧.date的的确没法取.
      

  7.   

    SQL> desc emp
    Name     Type         Nullable Default Comments 
    -------- ------------ -------- ------- -------- 
    EMPNO    NUMBER(4)                              
    ENAME    VARCHAR2(10) Y                         
    JOB      VARCHAR2(9)  Y                         
    MGR      NUMBER(4)    Y                         
    HIREDATE DATE         Y                         
    SAL      NUMBER(7,2)  Y                         
    COMM     NUMBER(7,2)  Y                         
    DEPTNO   NUMBER(2)    Y                         
     
    SQL> select decode(t.data_precision,null,t.data_length,t.data_precision) from user_tab_cols t where t.table_name='EMP' and t.column_name='EMPNO';
     
    DECODE(T.DATA_PRECISION,NULL,T
    ------------------------------
                                 4
     
    SQL> select decode(t.data_precision,null,t.data_length,t.data_precision) from user_tab_cols t where t.table_name='EMP' and t.column_name='ENAME';
     
    DECODE(T.DATA_PRECISION,NULL,T
    ------------------------------
                                10
     
    SQL> 
      

  8.   

    dba_tab_columns里面有长度说明的
      

  9.   

    我的ENAME    VARCHAR2(10),但出来的结果是 40;
    HIREDATE DATE 出来的结果是 7;
    为色么?
      

  10.   

    我的ENAME VARCHAR2(10),但出来的结果是 20;
    上面写错了
      

  11.   

    汗,不是吧.你数据库版本?是直接执行的我上面写的sql么
      

  12.   

    还有个data_scale字段也是有用的,比如number(10,2),这个字段会存储2,也就是小数的精度.