在本教學中,您將學習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將對該值進行四捨五入。
以下語句建立一個名為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包含許多可用於定義數位列的別名,如下表所示:
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
資料型別以及如何使用它來為表定義數位列。