0,對(duì)s分2種情況:  1. s>0  精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否create table t_n(id number(5,2));" />

****欧欧美毛片4,国产午夜精品视频,97视频在线观看免费视频,久久七国产精品

數(shù)據(jù)恢復(fù)咨詢熱線:400-666-3702??

歡迎訪問(wèn)南京兆柏?cái)?shù)據(jù)恢復(fù)公司,專業(yè)數(shù)據(jù)恢復(fù)15年

兆柏?cái)?shù)據(jù)恢復(fù)公司

?行業(yè)新聞

?當(dāng)前位置: 主頁(yè) > 行業(yè)新聞

Oracle number數(shù)據(jù)類型!

瀏覽量: 次 發(fā)布日期:2023-08-11 21:28:09

Oracle number數(shù)據(jù)類型!

  一、oracle的number類型精度、刻度范圍

  number(p,s)

  p:1---38

  s:-84---127

  有效數(shù)位:從左邊第一個(gè)不為0的數(shù)算起,小數(shù)點(diǎn)和負(fù)號(hào)不計(jì)入有效位數(shù)。

  p>0,對(duì)s分2種情況:

  1. s>0

  精確到小數(shù)點(diǎn)右邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否<=p;

  ZWF.YUDONG>create table t_n(id number(5,2));

  Table created.

  ZWF.YUDONG>insert into t_n values(123.45);

  1 row created.

  ZWF.YUDONG>insert into t_n values(123.455);

  1 row created.

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  123.45

  123.46

  2 rows selected.

  ZWF.YUDONG>insert into t_n values(1.234);

  1 row created.

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  123.45

  123.46

  1.23

  3 rows selected.

  ZWF.YUDONG>insert into t_n values(.001);

  1 row created.

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  123.45

  123.46

  1.23

  0

  4 rows selected.

  ZWF.YUDONG>insert into t_n values(1234.56);

  insert into t_n values(1234.56)

  *

  ERROR at line 1:

  ORA-01438: value larger than specified precision allowed for this column

  如果s>p,小數(shù)點(diǎn)右邊至少有s-p個(gè)0填充。

  ZWF.YUDONG>create table t_n(id number(4,5));

  Table created.

  ZWF.YUDONG>insert into t_n values(1);

  insert into t_n values(1)

  *

  ERROR at line 1:

  ORA-01438: value larger than specified precision allowed for this column

  ZWF.YUDONG>insert into t_n values(.1);

  insert into t_n values(.1)

  *

  ERROR at line 1:

  ORA-01438: value larger than specified precision allowed for this column

  ZWF.YUDONG>insert into t_n values(.01);

  1 row created.

  ZWF.YUDONG>commit;

  Commit complete.

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  .01

  1 row selected.

  ZWF.YUDONG>insert into t_n values(.001);

  1 row created.

  ZWF.YUDONG>insert into t_n values(.0001);

  1 row created.

  ZWF.YUDONG>insert into t_n values(.00001);

  1 row created.

  ZWF.YUDONG>insert into t_n values(.000001); --超過(guò)刻度存儲(chǔ)0

  1 row created.

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  .01

  .001

兆柏數(shù)據(jù)恢復(fù)公司

  .0001

  .00001

  0

  10 rows selected.

  ZWF.YUDONG>col dp for a50

  ZWF.YUDONG>select id,dump(id) dp,length(id),vsize(id) from t_n;--vsize和dump的是字節(jié)數(shù),length是數(shù)值實(shí)際位數(shù)(含小數(shù)點(diǎn))

  ID DP LENGTH(ID)VSIZE(ID)

  ---------- -------------------------------------------------- ---------- ----------

  .01 Typ=2 Len=2: 192,2 3 2

  .001 Typ=2 Len=2: 191,11 4 2

  .0001 Typ=2 Len=2: 191,2 5 2

  .00001 Typ=2 Len=2: 190,11 6 2

  0 Typ=2 Len=1: 128 1 1

  5 rows selected.

  2. s<0

  精確到小數(shù)點(diǎn)左邊s位,并四舍五入。然后檢驗(yàn)有效數(shù)位是否<=p+|s|

  ZWF.YUDONG>create table t_n(id number(5,-2));

  Table created.

  ZWF.YUDONG>insert into t_n values(12345);

  1 row created.

兆柏?cái)?shù)據(jù)恢復(fù)公司

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  12300

  1 row selected.

  ZWF.YUDONG>insert into t_n values(123456);

  1 row created.

  ZWF.YUDONG>insert into t_n values(1234567);

  1 row created.

  ZWF.YUDONG>select * from t_n;

  ID

  ----------

  12300

  123500

  1234600

  3 rows selected.

  ZWF.YUDONG>insert into t_n values(12345678);

  insert into t_n values(12345678)

  *

  ERROR at line 1:

  ORA-01438: value larger than specified precision allowed for this column

  二、oracle的number類型存儲(chǔ)結(jié)構(gòu):

  oracle采用變長(zhǎng)存儲(chǔ)number數(shù)據(jù)類型(按一定規(guī)則進(jìn)行轉(zhuǎn)換成2進(jìn)制編碼格式存儲(chǔ))。

  oracle數(shù)據(jù)庫(kù)中存儲(chǔ)的number類型包含3個(gè)部分: HEAD部分, DATA部分, 符號(hào)位。

  對(duì)正數(shù)來(lái)說(shuō), 符號(hào)位省略, 對(duì)0來(lái)說(shuō), oracle存儲(chǔ)的是X80(128)。

  ZWF.YUDONG>select dump(0) from dual;

  DUMP(0)

  ----------------

  Typ=2 Len=1: 128

  1 row selected.

  ZWF.YUDONG>select dump(1) from dual;

  DUMP(1)

  ------------------

  Typ=2 Len=2: 193,2

  1 row selected.

  ZWF.YUDONG>select dump(-1) from dual;

  DUMP(-1)

  -----------------------

  Typ=2 Len=3: 62,100,102

  1 row selected.

  HEAD部分為一個(gè)字節(jié)8位, 就是前面看到的128, 193,62。由該部分我們可以看出number類型的基本信息,因?yàn)樵O(shè)計(jì)這種存儲(chǔ)格式的時(shí)候, oracle希望以十六進(jìn)制00-FF來(lái)表示所有

  的number, 所以為了編碼的對(duì)稱, 首先將number分為正負(fù), 所以以00-FF的中間位置80, 也就是十進(jìn)制的128來(lái)表示0, HEAD部分小于80,即為負(fù)數(shù),大于80即為正數(shù)。ORACLE再次對(duì)

  00-80, 80-FF進(jìn)行對(duì)分:

  00-3E 表示: number <= -1

  3F-7F 表示: -1 < number < 0

  81-C0 表示: 0 < number < 1

  C1-FF 表示:number >= 1

  從HEAD部分我們可以也看出數(shù)據(jù)的位數(shù)信息,是否含有小數(shù),可以根據(jù)HEAD的信息判斷小數(shù)點(diǎn)的位置。由于數(shù)據(jù)部分低位2的n次方位個(gè)0是不被存儲(chǔ)的,數(shù)據(jù)展現(xiàn)的時(shí)候oracle

  根據(jù)HEAD的信息給補(bǔ)充末位的0。

  ZWF.YUDONG>select dump(123456789) from dual;

  DUMP(123456789)

  ------------------------------

  Typ=2 Len=6: 197,2,24,46,68,90 --197(C5)的含義:表示數(shù)字123456789大于1,197-193(數(shù)字1占用2個(gè)字節(jié)該值為193) = 4 ,所以該數(shù)字占用6(2+4)個(gè)字節(jié)。

  1 row selected.

  然后,我們?cè)賮?lái)看數(shù)據(jù)部分, ORACLE對(duì)十進(jìn)制的數(shù)字(整數(shù)部分,小數(shù)部分正好相反)是兩位兩位進(jìn)行存儲(chǔ)的(從右往左的順序), 例如對(duì)1234, ORACLE會(huì)分別對(duì)12, 34進(jìn)行存儲(chǔ).

  所以只需要對(duì)(+-)1-99進(jìn)行編碼

  1 --- 99 分別用十六進(jìn)制2-64表示,就是2-100,

  -1--- -99 用十六進(jìn)制64-2表示,就是100-2

  ZWF.YUDONG>select dump(12345) from dual;

  DUMP(12345)

  ------------------------

  Typ=2 Len=4: 195,2,24,46--數(shù)據(jù)部分2,24,46 表示 (2-1=1,24-1=23,46-1=45);HEAD部分表示12345 >= 1,占用195-193+2=4字節(jié)。

  1 row selected.

  SYS.YUDONG>select dump(1100) from dual;

  DUMP(1100)

  -------------------

  Typ=2 Len=2: 194,12 --如果從右邊起,連續(xù)2的n次方位為0,oracle一次排觸(不存儲(chǔ))只是位數(shù)加1。可以對(duì)比dump(11)的情況看看。

  1 row selected.

  SYS.YUDONG>select dump(11) from dual;

  DUMP(11)

  -------------------

  Typ=2 Len=2: 193,12 --這里數(shù)據(jù)部分和1100是一樣的,末位的2個(gè)0沒(méi)有實(shí)際存儲(chǔ),長(zhǎng)度193比194小1。

  1 row selected.

兆柏?cái)?shù)據(jù)恢復(fù)公司

  --對(duì)于含小數(shù)(負(fù)數(shù)、整數(shù)2種情況)的情況:

  1、負(fù)數(shù)

  SYS.YUDONG>select dump(-1.2) from dual;

  DUMP(-1.2)

  --------------------------

  Typ=2 Len=4: 62,100,81,102 --HEAD=62(3E)表示該數(shù)值小于等于-1;數(shù)據(jù)部分:整數(shù)部分的-1存儲(chǔ)為100,小數(shù)部分從左往右2位一結(jié)合,不足2位后邊補(bǔ)一個(gè)1。

  對(duì)應(yīng)關(guān)系變?yōu)?,8...1表示1,2...9,看下面幾個(gè)例子,如果足2位,還是按照上邊說(shuō)的規(guī)律(-1--- -99 用十六進(jìn)制64-2表示,就是100-2)。

  1 row selected.

  ZWF.YUDONG>select dump(-2.1) from dual;

  DUMP(-2.1)

  -------------------------

  Typ=2 Len=4: 62,99,91,102

  1 row selected.

  ZWF.YUDONG>select dump(-2.2) from dual;

  DUMP(-2.2)

  -------------------------

  Typ=2 Len=4: 62,99,81,102

  1 row selected.

  ZWF.YUDONG>select dump(-2.9) from dual;

  DUMP(-2.9)

  -------------------------

  Typ=2 Len=4: 62,99,11,102

  1 row selected.

  ZWF.YUDONG>select dump(-2.12) from dual;

  DUMP(-2.12)

  -------------------------

  Typ=2 Len=4: 62,99,89,102

  1 row selected.

  ZWF.YUDONG>select dump(-2.13) from dual;

  DUMP(-2.13)

  -------------------------

  Typ=2 Len=4: 62,99,88,102

  1 row selected.

  ZWF.YUDONG>select dump(-2.123) from dual;

  DUMP(-2.123)

  ----------------------------

  Typ=2 Len=5: 62,99,89,71,102

  1 row selected.

  2、正數(shù)

  SYS.YUDONG>select dump(1.222) from dual;

  DUMP(1.222)

  ------------------------

  Typ=2 Len=4: 193,2,23,21 --HEAD=193(C1)表示該數(shù)字大于等于1;數(shù)據(jù)部分:整數(shù)部分存儲(chǔ)2(2-1=1),小數(shù)部分從左往右2位一結(jié)合,23(23-1=22)表示22,后邊還剩下一個(gè)2,

  不足2位的末尾補(bǔ)充一個(gè)1,也就是等于1.2220

  1 row selected.

  ZWF.YUDONG>select dump(1.2220) from dual;

  DUMP(1.2220)

  ------------------------

  Typ=2 Len=4: 193,2,23,21

  1 row selected.

  符號(hào)位: 用的是(+-)1-99都不可能用到的編碼66(102)來(lái)表示,有資料說(shuō)為了處理排序問(wèn)題(未加考證)。根據(jù)HEAD部分可以做初步判斷,根據(jù)我們說(shuō)的HEAD部分的四個(gè)范圍,

  如果2個(gè)數(shù)值不在一個(gè)范圍,立即可以看出大小,如果在一個(gè)范圍其實(shí)也可以根據(jù)其正負(fù)+絕對(duì)值來(lái)進(jìn)行排序了,正數(shù)絕對(duì)值大的就大,負(fù)數(shù)則相反,為何還要用到這個(gè)符號(hào)位?


重要數(shù)據(jù)丟失請(qǐng)聯(lián)系兆柏?cái)?shù)據(jù)恢復(fù)公司 重要數(shù)據(jù)丟失請(qǐng)聯(lián)系兆柏?cái)?shù)據(jù)恢復(fù)公司
相關(guān)推薦

. 設(shè)計(jì)一個(gè)圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù),圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)

. 分布式數(shù)據(jù)源,分布式數(shù)據(jù)源概述

. oracle證書(shū),開(kāi)啟數(shù)據(jù)庫(kù)專業(yè)之旅的鑰匙

. 渠縣硬盤數(shù)據(jù)恢復(fù)在哪里,專業(yè)團(tuán)隊(duì)助您找回重要數(shù)據(jù)

. 超融合數(shù)據(jù)備份,構(gòu)建企業(yè)數(shù)據(jù)安全的堅(jiān)實(shí)防線

. 分布式數(shù)據(jù)存儲(chǔ)技術(shù),分布式數(shù)據(jù)存儲(chǔ)技術(shù)概述

. 分布式數(shù)據(jù)服務(wù) 書(shū)籍pdf,構(gòu)建高效、可擴(kuò)展的數(shù)據(jù)生態(tài)系統(tǒng)

. 固態(tài)硬盤數(shù)據(jù)恢復(fù)一般多少錢,固態(tài)硬盤修復(fù)手把手教你救治不認(rèn)盤的固態(tài)

. 融合硬盤數(shù)據(jù)恢復(fù),硬盤數(shù)據(jù)恢復(fù)的重要性

. 上海硬盤數(shù)據(jù)恢復(fù)微信,專業(yè)服務(wù),守護(hù)您的數(shù)據(jù)安全

. oracle歸檔日志設(shè)置,Oracle數(shù)據(jù)庫(kù)歸檔日志設(shè)置詳解

. 硬盤數(shù)據(jù)覆蓋幾次能恢復(fù),硬盤數(shù)據(jù)覆蓋幾次能恢復(fù)?揭秘?cái)?shù)據(jù)恢復(fù)的奧秘

. 硬硬盤數(shù)據(jù)恢復(fù)工具,硬盤數(shù)據(jù)恢復(fù)工具全解析——守護(hù)你的數(shù)字資產(chǎn)

. 分布式數(shù)據(jù)服務(wù)包括,構(gòu)建高效、可擴(kuò)展的數(shù)據(jù)生態(tài)系統(tǒng)

. 數(shù)據(jù)恢復(fù)實(shí)體店,守護(hù)數(shù)據(jù)安全,還原丟失信息

. 數(shù)據(jù)庫(kù)修復(fù),數(shù)據(jù)庫(kù)修復(fù)的重要性

. 北京恢復(fù)移動(dòng)硬盤數(shù)據(jù),移動(dòng)硬盤燈亮但不讀取無(wú)法識(shí)別

. sql數(shù)據(jù)庫(kù)顯示可疑,原因分析與解決方法

. 恢復(fù)硬盤數(shù)據(jù)大概要多久,全面解析與準(zhǔn)備

. 照片恢復(fù)大師免費(fèi)版,照片恢復(fù)大師免費(fèi)版——您的數(shù)據(jù)恢復(fù)得力助手