Oracle數(shù)據(jù)庫中,我們會經(jīng)常見到類似于Number(8,2)的類型,這個類型代表什么,又與int類型有什么區(qū)別呢,今天跟大家一起分享一下。
Number(precision,scale)中:
(1)precision(精度) 表示數(shù)字中的有效位,如果沒有指定數(shù)字大小的話,Oracle默認(rèn)使用38作為精度.
(2)scale(刻度) ,如果sacle大于0,表示數(shù)字精確到小數(shù)點(diǎn)右邊的位數(shù);scale默認(rèn)設(shè)置為0;如果scale小于零,Oracle將把該數(shù)字取舍到小數(shù)點(diǎn)左邊的指定位數(shù)。
Precision表示有效位數(shù),有效數(shù)位:從左邊第一個不為0的數(shù)算起,小數(shù)點(diǎn)和負(fù)號不計入有效位數(shù);scale表示精確到多少位,指精確到小數(shù)點(diǎn)左邊或右邊多少位(+-決定)。
Number整數(shù)部分允許的長度為(percision-scale),無論scale是正數(shù)還是負(fù)數(shù)
(1)當(dāng)一個數(shù)的整數(shù)部分的長度 > p-s 時,Oracle就會報錯
(2)當(dāng)一個數(shù)的小數(shù)部分的長度 > s 時,Oracle就會舍入。
(3)當(dāng)s(scale)為負(fù)數(shù)時,Oracle就對小數(shù)點(diǎn)左邊的s個數(shù)字進(jìn)行舍入。
(4)當(dāng)s > p 時, p表示小數(shù)點(diǎn)后第s位向左最多可以有多少位數(shù)字,如果大于p則Oracle報錯,小數(shù)點(diǎn)后s位向右的數(shù)字被舍入
與int的區(qū)別
(1) oracle本來就沒有int類型,為了與別的數(shù)據(jù)庫兼容,新增了int類型作為number類型的子集。
(2)int類型只能存儲整數(shù);number可以存儲浮點(diǎn)數(shù),也可以存儲整數(shù);number(8,1)存儲小數(shù)位為1位,總長度為8的浮點(diǎn)數(shù),如果小數(shù)位數(shù)不足,則用0補(bǔ)全
(3)number(8)存儲總長度為8的整數(shù);
(4)int相當(dāng)于number(22),存儲總長度為22的整數(shù)。
Oracle 自增 不同于mysql可以直接設(shè)置自增,需要建立序列,和觸發(fā)器。
-
觸發(fā)器
+關(guān)注
關(guān)注
14文章
2000瀏覽量
61158 -
Oracle
+關(guān)注
關(guān)注
2文章
289瀏覽量
35134 -
MySQL
+關(guān)注
關(guān)注
1文章
809瀏覽量
26576 -
oracle數(shù)據(jù)庫
+關(guān)注
關(guān)注
0文章
16瀏覽量
7670
發(fā)布評論請先 登錄
相關(guān)推薦
評論