Oracle 數(shù)字類型在數(shù)據(jù)庫中使用廣泛,其具有精確和近似兩種類型。精確類型包括 NUMBER(p,s) 和 NUMERIC(p,s),而近似類型包括 FLOAT(p) 和 REAL。以下將介紹各個數(shù)字類型的詳細內(nèi)容。
NUMBER(p,s)
NUMBER 是 Oracle 中精確數(shù)值類型的一種,其中 p 是指數(shù)值的最大位數(shù),s 是小數(shù)位數(shù)。NUMBER 數(shù)據(jù)類型在表中的存儲方式與數(shù)值無關,只與列的定義和輸入的數(shù)據(jù)精度有關。以下是一個示例:
CREATE TABLE test ( num1 NUMBER(3,2), num2 NUMBER(7,3) );
在上面的示例中,num1 列具有 3 個位數(shù),其中小數(shù)點后有 2 位,而 num2 列具有 7 個位數(shù),其中小數(shù)點后有 3 位。
NUMERIC(p,s)
NUMERIC 類似于 NUMBER,用于存儲精確數(shù)值。但是和 NUMBER 不同,NUMERIC 的應用范圍不受制于 DBMS 內(nèi)部存儲格式,也就是與數(shù)據(jù)庫無關。以下是一個示例:
CREATE TABLE test ( num1 NUMERIC(3,2), num2 NUMERIC(7,3) );
在上面的示例中,num1 列具有 3 個位數(shù),其中小數(shù)點后有 2 位,而 num2 列具有 7 個位數(shù),其中小數(shù)點后有 3 位。
FLOAT(p)
FLOAT 用于存儲近似數(shù)值類型,可用來存儲單精度浮點數(shù)。 FLOAT(p) 的參數(shù) p 指定了在存儲時應使用的位數(shù)。在不指定 p 的情況下,默認 p 為 126。以下是一個示例:
CREATE TABLE test ( num1 FLOAT, num2 FLOAT(63) );
在上面的示例中,num1 列使用默認的 126 位存儲浮點數(shù),而 num2 列使用 63 位存儲浮點數(shù)。
REAL
REAL 也是一種近似數(shù)值類型,可用來存儲單精度浮點數(shù)。REAL 與 FLOAT 不同的是,REAL 不需要指定 p 參數(shù),因為其默認使用 63 位存儲浮點數(shù)。以下是一個示例:
CREATE TABLE test ( num1 REAL, num2 REAL );
在上面的示例中,num1 和 num2 列都使用默認的 63 位存儲浮點數(shù)。
總結
在 Oracle 中,數(shù)字類型包括精確和近似兩種類型。精確類型中的 NUMBER(p,s) 和 NUMERIC(p,s) 是存儲精確數(shù)值的最佳選擇,可以有效地控制數(shù)值的精度和長度。而近似類型中的 FLOAT(p) 和 REAL 則可以用于存儲單精度浮點數(shù),可適用于對精確度要求較低的場合。