Oracle Number型別


在本教學中,您將學習Oracle NUMBER資料型別以及如何使用它來為表定義數位列。

Oracle NUMBER型別簡介

Oracle NUMBER資料型別用於儲存可能為負值或正值的數值。以下說明了NUMBER資料型別的語法:

NUMBER[(precision [, scale])]

Oracle NUMBER資料型別具有以下精度和尺度。

  • 精度是一個數位中的位數。 範圍從138
  • 尺度是數位中小數點右側的位數。 範圍從-84127

例如,數位1234.56的精度是6,尺度是2。所以要儲存這個數位,需要定義為:NUMBER(6,2)

精度和尺度都是十進位制數位,可選。 如果跳過精度和小數位,Oracle使用數位的最大範圍和精度。

例如,下面的表格定義了一個可以儲存數值的數位,其數值範圍和精度都是最大的:

NUMBER

以下語法定義了一個定點數位:

NUMBER(p,s)

要定義一個整數,可以使用下面的形式:

NUMBER(p)

上面表示一個精度為p,尺度為零的定點數,相當於如下:

NUMBER(p,0)

Oracle允許規模為負數,例如,下面的數位將數值四捨五入到數百。

NUMBER(5,-2)

請注意,如果在NUMBER(p,s)列中插入數位,並且數位超過精度p,則Oracle將發出錯誤。 但是,如果數量超過尺度s,則Oracle將對該值進行四捨五入。

Oracle NUMBER資料型別範例

以下語句建立一個名為number_demo的表,該錶由Number數位列組成:

CREATE TABLE number_demo ( 
    number_value NUMERIC(6, 2) 
);

以下INSERT語句向number_demo表中插入三個數位:

INSERT INTO number_demo
VALUES(100.99);


INSERT INTO number_demo
VALUES(90.551);


INSERT INTO number_demo
VALUES(87.556);

在上面的範例中,

  • 第一個值被插入成功,因為該數位在列的定義範圍內。
  • 第二個值向下取整,第三個值向上取整,因為該列只接受帶有兩個小數點的數位。

以下範例插入number_value可以接受的最大值和最小值:

INSERT INTO number_demo
VALUES(9999.99);

INSERT INTO number_demo
VALUES(-9999.99);

以下範例會導致錯誤,因為插入的值超出了為列定義的精度。

INSERT INTO number_demo
VALUES(-10000);

考慮下面的例子:

INSERT INTO number_demo
VALUES(9999.999);

在此範例中,該值被四捨五入,因為數位超過了為列定義的精度。

Oracle NUMBER資料型別別名

Oracle包含許多可用於定義數位列的別名,如下表所示:

ANSI資料型別 Oracle NUMBER資料型別
INT NUMBER(38)
SMALLINT NUMBER(38)
NUMBER(p,s) NUMBER(p,s)
DECIMAL(p,s) NUMBER(p,s)

請注意,INTSMALLINTNUMERICDECIMAL只是別名。它們不是真正的資料型別。 Oracle在內部將這些別名對映到相應的NUMBER資料型別。

在本教學中,您已經學習了Oracle NUMBER資料型別以及如何使用它來為表定義數位列。