number資料型別
number ( precision, scale)
a) precision表示數字中的有效位;如果沒有指定precision的話,oracle將使用38作為精度。
b) 如果scale大於零,表示數字精確到小數點右邊的位數;scale預設設定為0;如果scale小於零,oracle將把該數字取捨到小數點左邊的指定位數。
c) precision的取值範圍為【1---38】;scale的取值範圍為【-84---127】。
d) number整數部分允許的長度為(precision- scale),無論scale是正數還是負數。
e) 如果precision小於scale,表示儲存的是沒有整數的小數。
f) precision表示有效位數,
有效數字:從左邊第乙個不為0的數算起,小數點和負號不計入有效位數;scale表示精確到多少位,指精確到小數點左邊或右邊多少位(+-決定)。
g)number值型別舉例:
實際值
資料型別
儲存值
1234567.89
number
1234567.89
1234567.89
number(8)
1234567
1234567.89
number(6)
出錯
1234567.89
number(9,1)
1234567.9
1234567.89
number(9,3)
出錯
1234567.89
number(7,2)
出錯
1234567.89
number(5,-2)
1234600
1234511.89
number(5,-2)
1234500
1234567.89
number(5,-4)
1230000
1234567.89
number(*,1)
1234567.9
0.012
number(2,3)
0.012
0.23
number(2,3)
出錯
h) 關於precision, scale也可以作如下表述
定點數的精度(p)和刻度(s)遵循以下規則:
1) 當乙個數的整數部分的長度 > p-s 時,oracle就會報錯
2) 當乙個數的小數部分的長度 > s 時,oracle就會捨入。
3) 當s(scale)為負數時,oracle就對小數點左邊的s個數字進行捨入。
4) 當s > p 時, p表示小數點後第s位向左最多可以有多少位數字,如果大於p則oracle報錯,小數點後s位向右的數字被捨入
number型別的子類
a) oracle本來就沒有int型別,為了與別的資料庫相容,新增了int型別作為number型別的子集。
b) int型別只能儲存整數;number可以儲存浮點數,也可以儲存整數。
c) 在oracle資料庫建表的時候,decimal,numeric不帶精度,oracle會自動把它處理成integer;帶精度,oracle會自動把它處理成number。
d) oracle只用number(m,n)就可以表示任何複雜的數字資料。
e) decimal,numeric,int等都為sql、db2等資料庫的資料型別,oracle為了相容才將其引入;但實際上在oracle內部還是以number的形式將其存入。
Oracle number型日期轉date型日期
oracle 資料表中的日期可以用 number 型別字段儲存,字段值資料如下,意為1970年1月1號0點0分距現在的毫秒值。1543400044000 1543400044000 1543400044000 1543400044000 解決辦法是寫乙個轉換函式 加上to number substr...
int,float,double型轉換深析
int整型 net中特指int32為32位長度符號整型變數 float 單精度浮點數32位長度1位符號位8位指數字與23位資料位 net中又稱為single double 64位長度雙精度浮點數1位符號位11位指數字52位資料位 它們互相關係就 int可以穩式轉換成float和double,floa...
Oracle number型別的語法和用法
number型別的語法很簡單,就是 number p,s p,s都是可選的,假如都不填,p預設為38,s預設為 48 127。1.精度 precision 或總位數。預設情況下,精度為38位,取值範圍是1 38之間。也可以用字元 表示38。2.小數字置 scale 或小數點右邊的位數。小數字數的合法...