oracle dump函数
生活随笔
收集整理的這篇文章主要介紹了
oracle dump函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載:[url]http://www.eygle.com/archives/2005/12/how_oracle_stor.html[/url] 作者:eygle 版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明 DUMP函數的輸出格式類似: 類型 <[長度]>,符號/指數位 [數字1,數字2,數字3,......,數字20] 各位的含義如下: 1.類型: Number型,Type=2 (類型代碼可以從Oracle的文檔上查到) 2.長度:指存儲的字節數 3.符號/指數位 在存儲上,Oracle對正數和負數分別進行存儲轉換: 正數:加1存儲(為了避免Null)
負數:被101減,如果總長度小于21個字節,最后加一個102(是為了排序的需要) 指數位換算: 正數:指數=符號/指數位 - 193 (最高位為1是代表正數)
負數:指數=62 - 第一字節 4.從<數字1>開始是有效的數據位 從<數字1>開始是最高有效位,所存儲的數值計算方法為: 將下面計算的結果加起來: 每個<數字位>乘以100^(指數-N) (N是有效位數的順序位,第一個有效位的N=0) 5、舉例說明
<指數>:??? 195 - 193 = 2
<數字1>???? 13 - 1???? = 12 *100^(2-0) 120000
<數字2>???? 35 - 1???? = 34 *100^(2-1) 3400
<數字3>???? 57 - 1???? = 56 *100^(2-2) 56
<數字4>???? 79 - 1???? = 78 *100^(2-3) .78
<數字5>???? 91 - 1???? = 90 *100^(2-4) .009
??????????????????????????? 123456.789
<指數>????? 62 - 60 = 2(最高位是0,代表為負數)
<數字1> 101 - 89 = 12 *100^(2-0) 120000
<數字2> 101 - 67 = 34 *100^(2-1) 3400
<數字3> 101 - 45 = 56 *100^(2-2) 56
<數字4> 101 - 23 = 78 *100^(2-3) .78
<數字5> 101 - 11 = 90 *100^(2-4) .009
????????????????????????????? 123456.789(-) 現在再考慮一下為什么在最后加102是為了排序的需要,-123456.789在數據庫中實際存儲為 60,89,67,45,23,11 而-123456.78901在數據庫中實際存儲為 60,89,67,45,23,11,91 可見,如果不在最后加上102,在排序時會出現-123456.789<-123456.78901的情況。
負數:被101減,如果總長度小于21個字節,最后加一個102(是為了排序的需要) 指數位換算: 正數:指數=符號/指數位 - 193 (最高位為1是代表正數)
負數:指數=62 - 第一字節 4.從<數字1>開始是有效的數據位 從<數字1>開始是最高有效位,所存儲的數值計算方法為: 將下面計算的結果加起來: 每個<數字位>乘以100^(指數-N) (N是有效位數的順序位,第一個有效位的N=0) 5、舉例說明
| SQL> select dump(123456.789) from dual;DUMP(123456.789) ------------------------------- Typ=2 Len=6: 195,13,35,57,79,91 |
<數字1>???? 13 - 1???? = 12 *100^(2-0) 120000
<數字2>???? 35 - 1???? = 34 *100^(2-1) 3400
<數字3>???? 57 - 1???? = 56 *100^(2-2) 56
<數字4>???? 79 - 1???? = 78 *100^(2-3) .78
<數字5>???? 91 - 1???? = 90 *100^(2-4) .009
??????????????????????????? 123456.789
| SQL> select dump(-123456.789) from dual;DUMP(-123456.789) ---------------------------------- Typ=2 Len=7: 60,89,67,45,23,11,102 |
<數字1> 101 - 89 = 12 *100^(2-0) 120000
<數字2> 101 - 67 = 34 *100^(2-1) 3400
<數字3> 101 - 45 = 56 *100^(2-2) 56
<數字4> 101 - 23 = 78 *100^(2-3) .78
<數字5> 101 - 11 = 90 *100^(2-4) .009
????????????????????????????? 123456.789(-) 現在再考慮一下為什么在最后加102是為了排序的需要,-123456.789在數據庫中實際存儲為 60,89,67,45,23,11 而-123456.78901在數據庫中實際存儲為 60,89,67,45,23,11,91 可見,如果不在最后加上102,在排序時會出現-123456.789<-123456.78901的情況。
轉載于:https://blog.51cto.com/airlgc/46807
總結
以上是生活随笔為你收集整理的oracle dump函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP开发10条经验总结(网上找的)
- 下一篇: 浅谈视觉设计的准确性