38代表總位數(shù) 3代表小數(shù)點(diǎn)后面位數(shù)
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的永靖網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
number(p,s)
p:1~38
s:-84~127
p0,對(duì)s分2種情況:1. s0
精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否=p;如果sp,小數(shù)點(diǎn)右邊至少有s-p個(gè)0填充。
2. s0
精確到小數(shù)點(diǎn)左邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否=p+|s|
123.2564 NUMBER 123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error
1234.9876 NUMBER(6) 1235
12345.345 NUMBER(5,-2) 12300
1234567 NUMBER(5,-2) 1234600
12345678 NUMBER(5,-2) Error
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
擴(kuò)展資料
ORACLE數(shù)據(jù)庫(kù)字段類型說(shuō)明:
目前Oracle?數(shù)據(jù)庫(kù)大概有26個(gè)字段類型,大體分為六類,分別是字符串類型、數(shù)字?jǐn)?shù)據(jù)類型、日期時(shí)間數(shù)據(jù)類型、大型對(duì)象(LOB)數(shù)據(jù)類型、RAW和LONG RAW數(shù)據(jù)類型、ROWID和UROWID數(shù)據(jù)類型。
oracle字段類型限制與誤區(qū)。
char(byte) ?
固定長(zhǎng)度字符串 ? ?最大長(zhǎng)度2000字節(jié)。
varchar2(byte)
默認(rèn)的表示方式,比如:varchar2(100),就相當(dāng)于varchar2(100 byte),表示最大字節(jié)數(shù)是100,該字段最多能容納100個(gè)字節(jié),強(qiáng)調(diào)空間大小。
保存漢字等字符時(shí),就要小心了。如果你的數(shù)據(jù)庫(kù)用的是GBK編碼,那么一個(gè)漢字將占用2個(gè)字節(jié),最多能存50個(gè)漢字,如果你的數(shù)據(jù)庫(kù)用的是UTF8編碼,那么一個(gè)漢字將占用3個(gè)字節(jié),最多能存33個(gè)漢字。
varchar2(char)
表示最大字符數(shù)是100,該字段最多能容納100個(gè)字符,強(qiáng)調(diào)個(gè)數(shù)。假設(shè)varchar2(100 char),那么無(wú)論是數(shù)字、字母、漢字,都看成一個(gè)字符,最多寫(xiě)100個(gè)。
當(dāng)然,漢字越多,占用的空間越大,同樣遵循上邊的數(shù)據(jù)庫(kù)編碼原則。例如:存入一個(gè)漢字,底層占2或3個(gè)字節(jié),存入一個(gè)字母,占1個(gè)字節(jié)。
nvarchar2()
沒(méi)有byte、char之分,類似于varchar2(char),只不過(guò)nvarchar2()屏蔽了數(shù)據(jù)庫(kù)編碼,無(wú)論是何種編碼,nvarchar2()中一個(gè)漢字都占兩個(gè)字節(jié)。
需要注意的是:
無(wú)論是varchar2還是nvarchar2,最大字節(jié)數(shù)都是4000.所以varchar(2000 char),當(dāng)存入2000個(gè)漢字時(shí),這時(shí)的總字節(jié)為6000(utf-8)。
但是最大的字節(jié)數(shù)為4000,這時(shí)多余的字節(jié)數(shù)就會(huì)被截取掉。
所以,對(duì)于GBK編碼的數(shù)據(jù)庫(kù)而言,安全的寫(xiě)法為:varchar2(2000 char)、nvarchar2(2000),對(duì)于UTF8編碼的數(shù)據(jù)庫(kù)而言,安全的寫(xiě)法為:varchar2(1333 char)、nvarchar2(2000)。
意思是:Number(p)是聲明一個(gè)整數(shù),最多有10位有效數(shù)字,1位小數(shù)。
number(4,3)是表示這個(gè)數(shù)一共有4位是有效位,后面的3表示有3個(gè)是小數(shù)也就是這個(gè)數(shù)只能是1.234,這樣格式的最大只能是9.999。
number(3,4)表示這個(gè)數(shù)有效位數(shù)是3位但是有四位小數(shù)也就是只能是這個(gè)格式0.0123最大只能是0.0999。
擴(kuò)展資料
Number類型的用法
p(precision)為精度,精度最大值為38;
s(scale)表示小數(shù)點(diǎn)右邊的數(shù)字個(gè)數(shù),scale的取值范圍為-84到127;
因此,Number(p)即是聲明一個(gè)整數(shù),相當(dāng)于Number(p,0),即等同于int型;
例子:
Number(8,1)存儲(chǔ)小數(shù)位為1位,總長(zhǎng)度為8的浮點(diǎn)數(shù),如果小數(shù)位數(shù)不足,則用0補(bǔ)全;
Number(8)存儲(chǔ)總長(zhǎng)度為8的整數(shù)。
加個(gè)check約束就行了
create?table?test1
(id?int,
fee?int?check(fee0));
Oracle number datatype 語(yǔ)法:NUMBER[(precision [, scale])]
簡(jiǎn)稱:precision -- p scale -- s
NUMBER(p,s)
范圍: 1 = p =38, -84 = s = 127
保存數(shù)據(jù)范圍:-1.0e-130 = number value 1.0e+126
保存在機(jī)器內(nèi)部的范圍: 1 ~ 22 bytes
有效位:從左邊第一個(gè)不為0的數(shù)算起的位數(shù)。
s的情況:
s 0
精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效位是否 = p。
s 0
精確到小數(shù)點(diǎn)左邊s位,并四舍五入。然后檢驗(yàn)有效位是否 = p + |s|。
s = 0
此時(shí)NUMBER表示整數(shù)。
從而,Oracle可以存儲(chǔ)、可以運(yùn)算的最大整數(shù)是 1e126 -1 。
declare
n number:=0;
begin
for i in REVERSE 1..125 loop
n := n + 9*power(10,i);
dbms_output.put_line(i || '--' || n);
end loop;
insert into tt(id)values(n);
commit;
end;
/
經(jīng)實(shí)際驗(yàn)證,的確可以存放1e126-1,但無(wú)法查看,也無(wú)法參與運(yùn)算。
文章名稱:oracle如何表示整數(shù),oracle轉(zhuǎn)換為整數(shù)
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article48/hddhhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、App開(kāi)發(fā)、虛擬主機(jī)、手機(jī)網(wǎng)站建設(shè)、微信公眾號(hào)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)