用select data_length from user_tab_columns取得的日期型字段长度为什么是7
数值型的长度为什么是22。这个问题怎么解决,求高手指教!

解决方案 »

  1.   

    ORACLE内部用数值来存储日期,oracle的date型定长7byte。
    分别存储:世纪、年、月、日、时、分、秒。
      

  2.   

    number不用定义长度,ORACLE自动按数据大小评估占用的存储空间。这一点有点像varchar2。
    ORACLE里能表示的数字,最大22byte。你定义的number(p,s),分别是刻度和精度,而不是存储的最大长度。
    SQL> create table test (id number(38));表已创建。SQL> desc test
     名称                                      是否为空? 类型
     ----------------------------------------- -------- ---------------------------- ID                                                 NUMBER(38)SQL> select column_name,data_type,data_length from user_tab_columns
      2  where table_name='TEST';COLUMN_NAME
    ------------------------------
    DATA_TYPE
    --------------------------------------------------------------------------------DATA_LENGTH
    -----------
    ID
    NUMBER
             22
    SQL>
      

  3.   

    我的意思就是如何用SQL得到number(p,s)中的p和s,或者直接得到(p,s)
    现在检索的结果是22,这个数没什么用
      

  4.   

    select DATA_PRECISION,DATA_SCALE from user_tab_columns;前者为p,后者为s。
      

  5.   

    suiziguo果然是个高手,拜谢了