2012年8月24日

Oracle的Number type

Oracle的Number表示可以有以下幾種:

  • 有小數點的數字
    Number(p,s)
    p:整數位(1~38位)
    s:精確度位數(-84到127, 正表示小數位數,負則是小數點往左邊取0的位數
    雖然selectt出的資料是依據整數位和精確數,但Oracle仍會以變動長度完全儲存所輸入的值
  • 整數
    Number(p)
    p:同上
  • 在最大整數位和精確度下儲存資料
    Number

浮點數FLOAT也可宣告精確數

但FLOAT 資料型態: 精確數 p = 二進制的 精確數 (必須乘上 0.30103 轉換)
所以 FLOAT = FLOAT (126) = 126 x 0.30103 = 約 37.9 位 精確數.

以下是一些例子

    假設我們有一數字7456123.89 以下宣告將Select時顯示不同輸出
NUMBER 7456123.89
NUMBER(9) 7456124
NUMBER(9,1) 7456123.9
NUMBER(*,1) 7456123.9
NUMBER(9,2) 7456123.89
NUMBER(6) [不允許輸入因超過整數位數]
NUMBER(7,-2) 7456100
FLOAT 7456123.89
FLOAT(12) 7456000.0


參考



http://ss64.com/ora/syntax-datatypes.html

1 則留言:

  1. 呃, 抱歉, oracle 的文件中, number 的 p 似乎應該是 total number of digits, 也就總共的數值個數 ?

    https://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

    回覆刪除