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數據類型以及如何使用它來為表定義數字列。


上一篇: Oracle重命名表 下一篇: Oracle Float類型