在Oracle中Number類型可以用來(lái)存儲(chǔ)0,正負(fù)定點(diǎn)或者浮點(diǎn)數(shù),可表示的數(shù)據(jù)范圍在
創(chuàng)新互聯(lián)建站堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十多年網(wǎng)站建設(shè)經(jīng)驗(yàn)創(chuàng)新互聯(lián)建站是成都老牌網(wǎng)站營(yíng)銷服務(wù)商,為您提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、H5開發(fā)、網(wǎng)站制作、品牌網(wǎng)站制作、小程序定制開發(fā)服務(wù),給眾多知名企業(yè)提供過(guò)好品質(zhì)的建站服務(wù)。
1.0 * 10(-130) —— 9.9...9 * 10(125) {38個(gè)9后邊帶88個(gè)0}
的數(shù)字,當(dāng)Oracle中的數(shù)學(xué)表達(dá)式的值=1.0*10(126)時(shí),Oracle就會(huì)報(bào)錯(cuò)。
Number的數(shù)據(jù)聲明如下:
表示 作用 說(shuō)明
Number(p, s) 聲明一個(gè)定點(diǎn)數(shù) p(precision)為精度,s(scale)表示小數(shù)點(diǎn)右邊的數(shù)字個(gè)數(shù),精度最大值為38,scale的取值范圍為-84到127
Number(p) 聲明一個(gè)整數(shù) 相當(dāng)于Number(p, 0)
Number 聲明一個(gè)浮點(diǎn)數(shù) 其精度為38,要注意的是scale的值沒(méi)有應(yīng)用,也就是說(shuō)scale的指不能簡(jiǎn)單的理解為0,或者其他的數(shù)。
定點(diǎn)數(shù)的精度(p)和刻度(s)遵循以下規(guī)則:
? 當(dāng)一個(gè)數(shù)的整數(shù)部分的長(zhǎng)度 p-s 時(shí),Oracle就會(huì)報(bào)錯(cuò)
? 當(dāng)一個(gè)數(shù)的小數(shù)部分的長(zhǎng)度 s 時(shí),Oracle就會(huì)舍入。
? 當(dāng)s(scale)為負(fù)數(shù)時(shí),Oracle就對(duì)小數(shù)點(diǎn)左邊的s個(gè)數(shù)字進(jìn)行舍入。
? 當(dāng)s p 時(shí), p表示小數(shù)點(diǎn)后第s位向左最多可以有多少位數(shù)字,如果大于p則Oracle報(bào)錯(cuò),小數(shù)點(diǎn)后s位向右的數(shù)字被舍入
oracle的number類型帶括號(hào)時(shí)如:NUMBER(P,S),只是用來(lái)指定所存儲(chǔ)數(shù)據(jù)的精度等制約條件的,當(dāng)所存儲(chǔ)的數(shù)據(jù)超出你預(yù)先指定的精度的時(shí)候,Oracle會(huì)給你返回一個(gè)錯(cuò)誤。反過(guò)來(lái)說(shuō),但你不指定精度等制約條件的是時(shí)候,也就是你默認(rèn)使用Oracle自身所設(shè)定的最大精度等制約條件,當(dāng)然是可以用來(lái)存儲(chǔ)負(fù)數(shù)或小數(shù)的。如下,Oracle官方文檔上是這樣描述的。(描述中的precision 就是上文中的P,scale就是上文中的S)
Specify a floating-point number using the following form:
NUMBER
The absence of precision and scale designators specifies the maximum range and
precision for an Oracle number.
目前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ù)類型。當(dāng)然Oracle還提供用戶自定義的數(shù)據(jù)類型,但在我這篇不做討論。
字符串類型
Char
char數(shù)據(jù)類型存儲(chǔ)固定長(zhǎng)度的字符值。一個(gè)CHAR數(shù)據(jù)類型可以包括1到2000個(gè)字符。如果對(duì)CHAR沒(méi)有明確地說(shuō)明長(zhǎng)度,它的默認(rèn)長(zhǎng)度則設(shè)置為1。 如果對(duì)某個(gè)CHAR類型變量賦值,其長(zhǎng)度小于規(guī)定的長(zhǎng)度,那么Oracle自動(dòng)用空格填充。
注意:如果給了一個(gè)比固定長(zhǎng)度更長(zhǎng)的值,其尾部帶有空格,則空格會(huì)被刪除到固定的長(zhǎng)度。如果值太大Oracle會(huì)返回一個(gè)錯(cuò)誤,
Varchar
用于保存變長(zhǎng)的字符串?dāng)?shù)據(jù)。其中最大字節(jié)長(zhǎng)度由(size)指定。每行長(zhǎng)度可變,最大長(zhǎng)度為每行4000字節(jié)。設(shè)置長(zhǎng)度(size)前需考慮字符集為單字節(jié)或多字節(jié)。
注意:varchar是被廢棄的類型,oracle目前都推薦使用varchar2。雖然varchar也可以用,但不確保未來(lái)的版本是否還支持
Varchar2
用于保存變長(zhǎng)的字符串?dāng)?shù)據(jù)。其中最大字節(jié)長(zhǎng)度由(size)指定。每行長(zhǎng)度可變,最大長(zhǎng)度為每行4000字節(jié)。設(shè)置長(zhǎng)度(size)前需考慮字符集為單字節(jié)或多字節(jié)。由于VARCHAR2數(shù)據(jù)類型只存儲(chǔ)為該列所賦的字符(不加空格),所以VARCHAR2需要的存儲(chǔ)空間比CHAR數(shù)據(jù)類型要小。
區(qū)別:varchar2把所有字符都占兩字節(jié)處理(一般情況下),varchar只對(duì)漢字和全角等字符占兩字節(jié),數(shù)字,英文字符等都是一個(gè)字節(jié);VARCHAR2把空串等同于null處理,而varchar仍按照空串處理;大部分情況下建議使用varchar2類型,可以保證更好的兼容性。
Nchar
Unicode數(shù)據(jù)類型,根據(jù)字符集而定的固定長(zhǎng)度字符串,最大長(zhǎng)度2000bytes。
Nvarchar2
Unicode數(shù)據(jù)類型,根據(jù)字符集而定的可變長(zhǎng)度字符串,最大長(zhǎng)度4000bytes。
Long
可變長(zhǎng)字符列,最大長(zhǎng)度限制為2GB,用于不需要作字符串搜索的長(zhǎng)串?dāng)?shù)據(jù)。
說(shuō)明:此類型是一個(gè)遺留下來(lái)的而且將來(lái)不會(huì)被支持的數(shù)據(jù)類型,逐漸被BLOB,CLOB,NCLOB等大的數(shù)據(jù)類型所取代。
數(shù)字類型
Number
NUMBER數(shù)據(jù)類型精度可以高達(dá)38位,它有兩個(gè)限定符,如:column NUMBER(precision,scale)。precision表示數(shù)字中的有效位。如果沒(méi)有指定precision的話,Oracle將使用38 作為精度。scale表示小數(shù)點(diǎn)右邊的位數(shù),scale默認(rèn)設(shè)置為0。如果把scale設(shè)成負(fù)數(shù),Oracle將把該數(shù)字取舍到小數(shù)點(diǎn)左邊的指定位數(shù)。
Decimal
Oracle只是在語(yǔ)法上支持decimal類型,但是在底層實(shí)際上它就是number類型,支持decimal類型是為了能把數(shù)據(jù)從Oracle數(shù)據(jù)庫(kù)移到其他數(shù)據(jù)庫(kù)中。
Float
FLOAT類型也是NUMBER的子類型。其格式Float(n),數(shù) n 指示位的精度,可以存儲(chǔ)的值的數(shù)目。N 值的范圍可以從1 到 126。若要從二進(jìn)制轉(zhuǎn)換為十進(jìn)制的精度,請(qǐng)將n 乘以 0.30103。要從十進(jìn)制轉(zhuǎn)換為二進(jìn)制的精度,請(qǐng)用 3.32193乘小數(shù)精度。126 位二進(jìn)制精度的最大值是大約相當(dāng)于 38 位小數(shù)精度。
BINARY_FLOAT
BINARY_FLOAT 是一種 32 位,單精度浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)類型。每個(gè) BINARY_FLOAT 值需要5 字節(jié)存儲(chǔ)空間,其中 1字節(jié)用于存儲(chǔ)數(shù)據(jù)值的長(zhǎng)度。支持 NUMBER 數(shù)據(jù)類型所提供的基本功能。但采用二進(jìn)制精度,而NUMBER 采用十進(jìn)制精度。因此能夠提供更快的數(shù)學(xué)運(yùn)算速度,且能減少占用的存儲(chǔ)空間。
BINARY_DOUBLE
BINARY_DOUBLE 是一種 64 位,雙精度浮點(diǎn)數(shù)字?jǐn)?shù)據(jù)類型。每個(gè) BINARY_DOUBLE 值需要9 字節(jié)存儲(chǔ)空間,其中1 字節(jié)用于存儲(chǔ)數(shù)據(jù)值的長(zhǎng)度。支持 NUMBER 數(shù)據(jù)類型所提供的基本功能。但采用二進(jìn)制精度,而NUMBER 采用十進(jìn)制精度。因此能夠提供更快的數(shù)學(xué)運(yùn)算速度,且能減少占用的存儲(chǔ)空間。
日期數(shù)據(jù)類型
Date
ORACLE最常用的日期類型,它可以保存日期和時(shí)間,常用日期處理都可以采用這種類型。DATE表示的日期范圍可以是公元前4712年1月1日至公元9999年12月31日。
date類型在數(shù)據(jù)庫(kù)中的存儲(chǔ)固定為7個(gè)字節(jié), 第1字節(jié):世紀(jì)+100、 第2字節(jié):年、第3字節(jié):月、第4字節(jié):天、第5字節(jié):小時(shí)+1、第6字節(jié):分+1、第7字節(jié):秒+1。
Timestamp
ORACLE常用的日期類型,它與date的區(qū)別是不僅可以保存日期和時(shí)間,還能保存小數(shù)秒,小數(shù)位數(shù)可以指定為0-9,默認(rèn)為6位,所以最高精度 可以到ns(納秒),數(shù)據(jù)庫(kù)內(nèi)部用7或者11個(gè)字節(jié)存儲(chǔ),如果精度為0,則用7字節(jié)存儲(chǔ),與date類型功能相同,如果精度大于0則用11字節(jié)存儲(chǔ)。第1字節(jié):世紀(jì)+100、第2字節(jié):年、第3字節(jié):月、第4字節(jié):天、 第5字節(jié):小時(shí)+1、第6字節(jié):分+1、第7字節(jié):秒+1、 第8-11字節(jié):納秒,采用4個(gè)字節(jié)存儲(chǔ),內(nèi)部運(yùn)算類型為整形
注:TIMESTAMP日期類型如果與數(shù)值進(jìn)行加減運(yùn)算會(huì)自動(dòng)轉(zhuǎn)換為DATE型,也就是說(shuō)小數(shù)秒會(huì)自動(dòng)去除。
TIMESTAMP WITH TIME ZONE
對(duì)TIMESTAMP進(jìn)行了擴(kuò)展,用于存儲(chǔ)時(shí)區(qū)。時(shí)間戳以及時(shí)區(qū)位移值,其中fractional_seconds_precision是數(shù)字在第二日期時(shí)間字段的小數(shù)部分?jǐn)?shù)字的所有值??山邮艿闹凳?到9。默認(rèn)是6。默認(rèn)格式是確定明確的NLS_DATE_FORMAT參數(shù)或隱式的NLS_TERRITORY參數(shù)。大小固定為13字節(jié)。此數(shù)據(jù)類型包含日期時(shí)間字段YEAR,MONTH,日,小時(shí),分鐘,秒TIMEZONE_HOUR和TIMEZONE_MINUTE。它有一個(gè)明確的分?jǐn)?shù)秒和時(shí)區(qū)。
TIMESTAMP WITH LOCAL TIME ZONE
所有的TIMESTAMP WITH TIME ZONE值,但下列情況除外:數(shù)據(jù)標(biāo)準(zhǔn)化數(shù)據(jù)庫(kù)的時(shí)區(qū)時(shí),存儲(chǔ)在數(shù)據(jù)庫(kù)中。當(dāng)數(shù)據(jù)被檢索,用戶可以看到在會(huì)話時(shí)區(qū)中的數(shù)據(jù)。
默認(rèn)格式是確定明確的NLS_DATE_FORMAT參數(shù)或隱式的NLS_TERRITORY參數(shù)。的大小不同的7至11個(gè)字節(jié),取決于精度。
INTERVAL YEAR TO MONTH
存儲(chǔ)期間年數(shù)和月的時(shí)間,其中year_precision是數(shù)字的年份日期時(shí)間字段的數(shù)量。可接受的值是0到9。默認(rèn)是2。大小固定為5個(gè)字節(jié)。
INTERVAL DAY TO SECOND
其格式為:INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds)],是存儲(chǔ)一段時(shí)間以天,小時(shí),分鐘和秒,其中day_precision是數(shù)字在DAY日期時(shí)間字段的最大數(shù)量。可接受的值是0到9。默認(rèn)是2。fractional_seconds_precision是數(shù)字中的第二個(gè)字段的小數(shù)部分的數(shù)量。可接受的值是0到9。默認(rèn)是6。大小固定為11個(gè)字節(jié)。
INTERVAL YEAR TO MONTH
Oracle語(yǔ)法:INTERVAL YEAR [(year_precision )] TO MONTH,用來(lái)表示一段時(shí)間差, 只精確到年和月. year_precision是數(shù)字年的時(shí)間段,接受的值為0到9。默認(rèn)值是2。大小固定為5個(gè)字節(jié)。
大型對(duì)象(LOB)數(shù)據(jù)類型
Clob
最大4G,存儲(chǔ)單字節(jié)字符型數(shù)據(jù)。適用于存儲(chǔ)超長(zhǎng)文本。
Nclob
最大4G,存儲(chǔ)多字節(jié)國(guó)家字符型數(shù)據(jù)。適用于存儲(chǔ)超長(zhǎng)文本。
Blob
最大4G,存儲(chǔ)二進(jìn)制數(shù)據(jù)。適用于存儲(chǔ)圖像、視頻、音頻等。
BFile
最大長(zhǎng)度是4GB,在數(shù)據(jù)庫(kù)外部保存的大型二進(jìn)制對(duì)象文件,最大長(zhǎng)度是4GB。這種外部的LOB類型,通過(guò)數(shù)據(jù)庫(kù)記錄變化情況,但是數(shù)據(jù)的具體保存是在數(shù)據(jù)庫(kù)外部進(jìn)行的。 Oracle 可以讀取、查詢BFILE,但是不能寫入,不參與事務(wù)。
RAW和LONG RAW數(shù)據(jù)類型
RAW
raw(n)格式,其中n=1 to 2000,可變長(zhǎng)二進(jìn)制數(shù)據(jù),在具體定義字段的時(shí)候必須指明最大長(zhǎng)度n,Oracle 用這種格式來(lái)保存較小的圖形文件或帶格式的文本文件,如Miceosoft Word文檔。raw是一種較老的數(shù)據(jù)類型,將來(lái)會(huì)逐漸被BLOB、CLOB、NCLOB等大的對(duì)象數(shù)據(jù)類型所取代。
LONG RAW
最大長(zhǎng)度是2GB??勺冮L(zhǎng)二進(jìn)制數(shù)據(jù),最大長(zhǎng)度是2GB。Oracle 用這種格式來(lái)保存較大的圖形文件或帶格式的文本文件,如Miceosoft Word文檔,以及音頻、視頻等非文本文件。在同一張表中不能同時(shí)有l(wèi)ong類型和long raw類型,long raw也是一種較老的數(shù)據(jù)類型,將來(lái)會(huì)逐漸被BLOB、CLOB、NCLOB等大的對(duì)象數(shù)據(jù)類型所取代。
ROWID和UROWID數(shù)據(jù)類型
Rowid
ROWID為該表行的唯一標(biāo)識(shí),是一個(gè)偽列,可以用在SELECT中,但不可以用INSERT, UPDATE來(lái)修改該值。ROWID列,Oracle使用ROWID列來(lái)建立內(nèi)部索引。你可以引用ROWID的值,但ROWID并不存放在數(shù)據(jù)庫(kù)中,你可以創(chuàng)建一個(gè)表包含ROWID數(shù)據(jù)類型。但Oracle不保證該值是合法的rowids。用戶必須確保該rowid值是真實(shí)合法的。
Urowid
UROWID支持邏輯和物理的rowids,列UROWID類型可以存儲(chǔ)各種rowids, 從8.1以后的Oracle才有UROWID類型,它也可以用來(lái)保存以前的ROWID類型數(shù)據(jù)信息。
特殊數(shù)據(jù)類型
Xmltype
XMLType是Oracle從9i開始特有的數(shù)據(jù)類型,是一個(gè)繼承了Blob的強(qiáng)大存在,可以用來(lái)存儲(chǔ)xml并提供了相當(dāng)多的操作函數(shù),用來(lái)直接讀取xml文檔和管理節(jié)點(diǎn)。理論上可以保存2G大小的數(shù)據(jù)。作為XML數(shù)據(jù)的特殊存儲(chǔ)類型。Xmltype提供了適合的保存、檢索和操作的支持。
Xmlindex
XMLIndex 索引可用于 SQL/XML 函數(shù) XMLExists()、XMLTable() 和 XMLQuery(),而且它在查詢的任何部分都有效;它并不限于用在 WHERE 子句中。而您可能用于 XML 數(shù)據(jù)的其他任何索引都無(wú)法做到這一點(diǎn)。
XMLIndex 因此可提高對(duì) SELECT 列表數(shù)據(jù)和 FROM 列表數(shù)據(jù)的訪問(wèn)速度,對(duì) XML 片段提取尤為有用。基于函數(shù)的索引和 CTXXPath 索引。您無(wú)需預(yù)先了解將在查詢中使用的XPath 表達(dá)式。XMLIndex 完全是通用的,而基于函數(shù)的索引則不同。可將 XMLIndex 索引用于基于 XML 模式或非基于模式的數(shù)據(jù)。它可用于二進(jìn)制 XML 和非結(jié)構(gòu)化存儲(chǔ)模型。B 樹索引僅適用于以對(duì)象關(guān)系方式存儲(chǔ)(結(jié)構(gòu)化存儲(chǔ))的基于模式的數(shù)據(jù);它對(duì)于存儲(chǔ)在二進(jìn)制XML 或CLOB 實(shí)例中的基于 XML 模式的數(shù)據(jù)效率低下。可使用 XMLIndex 索引通過(guò) XPath 表達(dá)式進(jìn)行搜索,這些表達(dá)式的目標(biāo)是集合(即文檔中出現(xiàn)多次的節(jié)點(diǎn))。而函數(shù)索引則不然。
使用number類型。定義時(shí)這樣寫,number(6,3)。其中6表示一共6位。3表示有3位是小數(shù)。
還是number型。
參考以下定義:
number
(
precision,
scale)
precision表示數(shù)字中的有效位。如果沒(méi)有指定precision的話,oracle將使用38作為精度。
scale表示數(shù)字小數(shù)點(diǎn)右邊的位數(shù),scale默認(rèn)設(shè)置為0.
如果把scale設(shè)成負(fù)數(shù),oracle將把該數(shù)字取舍到小數(shù)點(diǎn)左邊的指定位數(shù)。
意思是: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ù)。
本文標(biāo)題:oracle負(fù)數(shù)怎么存 oracle number類型可以存負(fù)數(shù)嗎
鏈接地址:http://jinyejixie.com/article34/hpsdse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)頁(yè)設(shè)計(jì)公司、全網(wǎng)營(yíng)銷推廣、定制網(wǎng)站、微信公眾號(hào)、網(wǎng)站設(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)