數值在Oracle的內部儲存
數值在Oracle的內部儲存
數值在Oracle的內部儲存:
Oracle在資料庫內部透過相應的演算法轉換來進行資料儲存,這裡簡單介紹Oracle的Number型數值儲存及轉換。可以透過DUMP函式來轉換數字的儲存形式,一個簡單的輸出類似如下格式:
DUMP函式的輸出格式類似:
其中各引數的含義如下:
在儲存上,Oracle對正數和負數分別進行儲存轉換。而0既不屬於正數,也不屬於負數,是單獨進行處理的。
在以上的輸出中,0以十六進位制0x80儲存,僅包含了符號位,未包含資料位。為什麼用0x80儲存呢?注意0x80其二進位制表示為1000 0000,2Bytes如果同時用來表示正數和負數,那麼0x80正好將編碼進行了等分,所以0x80用來表示0數值。
有了0值劃分之後,符號位大於80的就是正數,符號位小於80的就是負數。接下來看看數值的儲存,以下是數值1的儲存輸出:
數值1的符號位為193,表示這是一個正數,而1使用的是數值2來儲存。這是因為在C語言中0作為字串終結符被保留,所以數值1使用2儲存,進一步地,所有的正數都是透過“加1”進行儲存表示的。
簡單地說,正數以及負數安裝如下規則儲存。
接下來再來看看指數位的作用,根據科學計數法可以知道,任何一個實數S都可以描述為A.B×10^n的形式(A表示整數部分,B表示小數部分,而n表示10的指數部分)。當S大於1時,N大於等於0,S小於1時,N小於0。
儲存中的指數位可以透過如下方式換算出來。
去除指數位,實際上從<數字 1>開始才是有效的資料位,根據指數及第一位的數值就可以將儲存的數值還原出來,所以Oracle儲存的計算方法為:
來看一下以下的示例說明:
注意在負數末尾會加入102,也就是十六進位制的0x66作為標記,這可以被看作符號位,表示負數,同時也是為了排序的需要,-123456.789在資料庫中實際儲存為60,89,67,45,23,11,而-123456.78901在資料庫中實際儲存為60,89,67,45,23,11,91,可見,如果不在最後加上102,在排序時會出現 -123456.789 < -123456.78901的情況。由於正數的表示範圍是0x01~0x64,負數的表示範圍是0x65~0x02。因此,不會在表示數字時出現0x66的。
- The End -
About Me
...............................................................................................................................
● 本文轉載自網路
● 本文在itpub(http://blog.itpub.net/26736162)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● QQ群:230161599 微信群:私聊
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2017-07-01 09:00 ~ 2017-07-31 22:00 在魔都完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
拿起手機使用微信客戶端掃描下邊的左邊圖片來關注小麥苗的微信公眾號:xiaomaimiaolhr,掃描右邊的二維碼加入小麥苗的QQ群,學習最實用的資料庫技術。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2141917/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL學習筆記(ORACLE內部儲存)SQL筆記Oracle
- Android-內部儲存和外部儲存Android
- oracle中的數值資料儲存格式分析(ZT)Oracle
- 關於ORACLE組合索引內部儲存淺談Oracle索引
- Android內部儲存和外部儲存,以及讀取Android讀取RAM,ROM內部儲存和外部儲存卡容量Android
- MongoDB 儲存引擎與內部原理MongoDB儲存引擎
- Cassandra的內部資料儲存結構
- 3 python的數值在記憶體中如何儲存Python記憶體
- oracle中dump函式及oracle NUMBER型別內部儲存機制Oracle函式型別
- 數值資訊的機器級儲存
- 一個數值儲存核取方塊的值
- HDU-安卓程式開發之簡單儲存/內部儲存/外部儲存 & 捉蟲安卓
- 資料庫內部儲存結構探索資料庫
- Java HashMap原理及內部儲存結構JavaHashMap
- String內部儲存方式與UnicodeUnicode
- 轉載:ASSM內部儲存研究大揭密SSM
- 行連線的一點內部儲存測試!
- Aspose.Slides.NET 19.2 解析ppt內容儲存svg 儲存ppt內部圖片IDESVG
- 結構體內部儲存中的對齊問題結構體
- Java靜態變數在靜態方法內部無法改變值Java變數
- SAS 數值儲存方式和精度問題
- MYSQL 資料型別儲存-數值型MySQL 資料型別
- MySQL Innodb 儲存結構 & 儲存Null值 解析MySqlNull
- 關於在Oracle儲存過程內使用迴圈及select的其他寫法。Oracle儲存過程
- 變數在 PHP7 內部的實現(一)變數PHP
- 變數在 PHP7 內部的實現(二)變數PHP
- Android中關於內部儲存的一些重要函式Android函式
- 小數在記憶體中是如何儲存的?記憶體
- Oracle內部事件Oracle事件
- 在 macOS 內使用大小寫敏感的 APFS 卷儲存程式碼Mac
- 內部專家親自揭秘!滴滴物件儲存系統的演進之路物件
- oracle的儲存過程Oracle儲存過程
- mysql 儲存過程中變數的定義與賦值操作MySql儲存過程變數賦值
- 淺談儲存一個檔案操作內部發生了什麼
- 簡單的鍵值儲存測試
- 實現鍵值對儲存(二):以現有鍵值對儲存為模型模型
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- oracle rac 10.2 的在 linux 上的儲存選項OracleLinux