回覆列表
  • 1 # 待花開稻花梔子花的

    oracle本來就沒有int型別,為了與別的資料庫相容,新增了int型別作為number型別的子集。

    int型別只能儲存整數;

    number可以儲存浮點數,也可以儲存整數;

    number(8,1)儲存小數位為1位,總長度為8的浮點數,如果小數位數不足,則用0補全;

    number(8)儲存總長度為8的整數;

    int相當於number(22),儲存總長度為22的整數。

    舉例說明:

    --建立表結構

    sql>createtabletab(id0int,id1number,id2number(8,1),id3number(8));

    tablecreated

    sql>

    --插入測試資料

    sql>insertintotabselect1,1.5,1.6,8fromdual;

    1rowinserted

    sql>insertintotabselect1,1.55,1.6,8fromdual;

    1rowinserted

    sql>insertintotabselect1,1.595,1,8fromdual;

    1rowinserted

    sql>commit;

    commitcomplete

    sql>select*fromtab;

    id0id1id2id3

    ---------------------------------------

    11.51.68

    11.551.68

    11.5951.08

    --查詢資料字典表dba_tab_columns

    sql>selecttable_name,column_name,data_type,data_length,data_precision,data_scalefromdba_tab_columnsa

    2wheretable_name="tab"

    3andowner="netmax"

    4orderbycolumn_id;

    table_namecolumn_namedata_typedata_lengthdata_precisiondata_scale

    -----------------------------------------------------------------------------------

    tabid0number220

    tabid1number22

    tabid2number2281

    tabid3number2280

    sql>

    在dba_tab_columns表中,

    data_type表示欄位型別;

    data_length表示欄位型別的長度;

    data_precision表示欄位型別的精度的總長度,如果為null,表示精度的總長度不固定,最長為data_length;

    data_scale表示欄位型別的精度範圍,如果為0,表示只能儲存為整數,

    如果為null,表示可以儲存整數或者浮點數,浮點數位數不確定,

    如果為整數,表示儲存的精度位數。

    查詢dba_tab_columns表,發現tab表中id0欄位型別int已經被轉換為number(22)。

  • 中秋節和大豐收的關聯?
  • 抑鬱症的本質是什麼?人為什麼會得抑鬱症?