sql> select 『smith』,dump(『smith』),dump(『smith』,16) from dual;
'smit dump(『smith』) dump(『smith』,16)
smith typ=96 len=5: 83,77,73,84,72 typ=96 len=5: 53,4d,49,54,48
而在trace中看到如下內容:
col 1: [ 5] 53 4d 49 54 48
s m i t h
這是ascii標準碼所規定的。
再看number型別
sql> select 7369,dump(7369),dump(7369,16) from dual;
7369 dump(7369) dump(7369,16)
7369 typ=2 len=3: 194,74,70 typ=2 len=3: c2,4a,46
難點在於194,193,192這類數字的定義
定義是 0-256 0:ff ,
所以在10進製裡,定義的中點是128,用來表示0
-10000 , 60
-100 , 61
-1 ,62
-0.1 , 63
0 , 128
0.1 , 192
1 , 193
100 , 194
10000 , 195
1000000, 196
100000000,197
10000000000, 198
select 0,dump(0),1,dump(1),10,dump(10) from dual;
select 100,dump(100),1000,dump(1000),10000,dump(10000) from dual;
select 100000,dump(100000),1000000,dump(1000000),10000000,dump(10000000) from dual;
select 10000000000,dump(10000000000) from dual;
select 0.1,dump(0.1),0.01,dump(0.01),0.5,dump(0.5) from dual;
select -0.1,dump(-0.1),-0.01,dump(-0.01),-0.5,dump(-0.5) from dual;
select 0,dump(0),-1,dump(-1),-10,dump(-10) from dual;
select -100,dump(-100),-10000,dump(-10000) from dual;
select 100000,dump(100000),1000000,dump(1000000),10000000,dump(10000000) from dual;
select 10000000000,dump(10000000000) from dual;
typ=2 len=3: 194,2,2
內部的演算法是 1屬於193的第乙個數字,用2減去1就是1。而99是193的最大一位數字,100減去1就是99.
100屬於194的第乙個數字,2減去1就是1.而194的1代表的是100
而101分成2部分, 100歸在194的2,而1歸在193的2,所以看到是194,2,2
先看數字屬於哪個區間,然後再以個位,百位,萬位,百萬位,億位來劃分數字。再來拆分,
我們繼續看小數點的影響:
select dump(1.9999) from dual;
select dump(1.99) from dual;
select dump(1.01) from dual;
select dump(1.001) from dual;
select dump(1.10) from dual;
select dump(99.1) from dual;
select dump(99.01) from dual;
typ=2 len=3: 193,100,2
oracle的數字設計的很有意思。
小數點以兩位為單位,0.01最小就是2,而0.99最大就是100, 減去1就得到數字。
所以7369,屬於少於10000,應該是194區間,而74-1=73,而70-1=69 。
所以十進位制裡應該存放的是194,74,70 三個數字,演算法含義是低於10000的數字,前2位是73,後兩位是69.
而194,74,70轉換為十六進製制是c2,4a,46 這樣3個數字。
而我們對比dump出來的格式:
tl: 38 fb: --h-fl-- lb: 0x0 cc: 8
col 0: [ 3] c2 4a 46
至此,才完成了number型別的解釋和學習。
Oracle 的資料型別
oracle的內建資料型別可以分為3大類,即標量資料型別 幾何資料型別和關係資料型別。下面分別介紹這些資料型別 1 表量資料型別 標量資料型別是一般的資料型別,可以返回標量值。標量資料型別可以由字元資料型別 數字資料型別 日期資料型別 raw資料型別 大物件資料型別和行資料型別組成。字元資料型別可以...
oracle 的資料型別
資料型別 datatype 是列 column 或儲存過程中的乙個屬性。oracle支援的資料型別可以分為三個基本種類 字元資料型別 char char資料型別儲存固定長度的字元值。乙個char資料型別可以包括1到2000個字元。如果對char沒有明確地說明長度,它的預設長度則設定為1.如果對某個c...
oracle的資料型別
資料型別 引數描述 char n n 1 to 2000位元組 定長字串,n位元組長,如果不指定長度,預設為1個位元組長 乙個漢字為2位元組 varchar2 n n 1 to 4000位元組 可變長的字串,具體定義時指明最大長度n,這種資料型別可以放數字 字母以及ascii碼字符集 或者ebcdi...