在本教學中,您將學習Oracle NUMBER
數據類型以及如何使用它來為表定義數字列。
Oracle NUMBER類型簡介
Oracle NUMBER
數據類型用於存儲可能為負值或正值的數值。以下說明了NUMBER
數據類型的語法:
NUMBER[(precision [, scale])]
Oracle NUMBER
數據類型具有以下精度和尺度。
- 精度是一個數字中的位數。 範圍從
1
到38
。 - 尺度是數字中小數點右側的位數。 範圍從
-84
到127
。
例如,數字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) |
請注意,INT
,SMALLINT
,NUMERIC
和DECIMAL
只是別名。它們不是真正的數據類型。 Oracle在內部將這些別名映射到相應的NUMBER
數據類型。
在本教學中,您已經學習了Oracle NUMBER
數據類型以及如何使用它來為表定義數字列。