Oracle數(shù)字的3種基本類型介紹
Oracle數(shù)字的3種基本Oracle Number類型,即 ,NUMBER、BINARY_INTENER與PLS_INTEGER。NUMBER的主要功能是用來描述相關(guān)整數(shù)或是實數(shù),但是PLS_INTEGER與BINARY_INTENER只能來描述整數(shù)。
NUMBER,是以十進制格式進行存儲的,它便于存儲,但是在計算上,系統(tǒng)會自動的將它轉(zhuǎn)換成為二進制進行運算的。它的定義方式是NUMBER(P,S),P是精度,***38位,S是刻度范圍,可在-84127間取值。例如:NUMBER(5,2)可以用來存儲表示-999.99999.99間的數(shù)值。P、S可以在定義是省略,例如:NUMBER(5)、NUMBER等;
BINARY_INTENER用來描述不存儲在數(shù)據(jù)庫中,但是需要用來計算的帶符號的整數(shù)值。它以2的補碼二進制形式表述。循環(huán)計數(shù)器經(jīng)常使用這種Oracle Number類型。
PLS_INTEGER和BINARY_INTENER唯一區(qū)別是在計算當(dāng)中發(fā)生溢出時,BINARY_INTENER型的變量會被自動指派給一個NUMBER型而不會出錯,PLS_INTEGER型的變量將會發(fā)生錯誤。
☆Number補充 在Oracle Number類型可以用來存儲0,正負定點或者浮點數(shù),可表示的數(shù)據(jù)范圍在 1.0 * 10(-130) —— 9.99 * 10(125) {38個9后邊帶88個0} 的Oracle數(shù)字,當(dāng)Oracle中的數(shù)學(xué)表達式的值>=1.0*10(126)時,Oracle就會報錯。
Number的數(shù)據(jù)聲明如下:
1)Number(p, s) 聲明一個定點數(shù) p(precision)為精度,s(scale)表示小數(shù)點右邊的Oracle數(shù)字個數(shù),精度***值為38,scale的取值范圍為-84到127
2)Number(p) 聲明一個整數(shù) 相當(dāng)于Number(p, 0)
3)Number 聲明一個浮點數(shù) 其精度為38,要注意的是scale的值沒有應(yīng)用,也就是說scale的指不能簡單的理解為0,或者其他的數(shù)。
定點數(shù)的精度(p)和刻度(s)遵循以下規(guī)則:
當(dāng)s>0時(s表示小數(shù)點右邊的數(shù)字的個數(shù)):
當(dāng)一個數(shù)的整數(shù)部分的長度 > p-s 時,Oracle就會報錯
當(dāng)一個數(shù)的小數(shù)部分的長度 > s 時,Oracle就會舍入。
當(dāng)s<0時(s表示小數(shù)點左邊的數(shù)字的個數(shù)):
Oracle就對小數(shù)點左邊的s個數(shù)字進行舍入。
當(dāng)s > p 時, p表示小數(shù)點后第s位向左最多可以有多少位Oracle數(shù)字,如果大于p則Oracle報錯,小數(shù)點后s位向右的數(shù)字被舍入例如:
Value-->Datatype-->Stored Value
123.2564-->NUMBER-->123.2564(不限制)
1234.9876-->NUMBER(6,2)-->1234.99(精確到小數(shù)點后兩位)
12345.12345-->NUMBER(6,2)-->Error(小數(shù)點左邊的有效數(shù)字長度5+小數(shù)點右邊的有效Oracle數(shù)字長度2>規(guī)定精度6)
1234.9876-->NUMBER(6)-->1235 (等價于NUMBER(6,0))
12345.345-->NUMBER(5,-2)-->12300 (小數(shù)點左邊兩位做四舍五入)
12345678-->NUMBER(5,-2)-->Error (8-2>5)
123456789-->NUMBER(5,-4)-->123460000
1234567890-->NUMBER(5,-4)-->Error
12345.58-->NUMBER(*, 1)-->12345.6
0.1-->NUMBER(4,5)-->Error
0.01234567-->NUMBER(4,5)-->0.01235
0.09999-->NUMBER(4,5)-->0.09999
0.099996-->NUMBER(4,5)-->Error
以上的相關(guān)內(nèi)容就是對Oracle 數(shù)字類型的介紹,望你能有所收獲。
【編輯推薦】