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

    回覆刪除