在Oracle 數(shù)據(jù)類型中如何使用dump函數(shù)
以下的文章主要是通過實例,來分析Oralce數(shù)據(jù)類型。我們以O(shè)racle 10G作為為基礎(chǔ),本文以介紹Oralce 10g引入的新的數(shù)據(jù)類型。來引出讓Oracle數(shù)據(jù)類型的相關(guān)實際操作,揭示Oracle 數(shù)據(jù)類型的相關(guān)類型的特點。
字符類型
1.1 char
定長字符串,會用空格來填充來達(dá)到其***長度,最長2000個字節(jié)。
1. 新建一個測試表test_char.,只有一個char類型的列。長度為10
SQL> create table test_char(colA char(10));
Table created
2. 向這個表中插入一些數(shù)據(jù)。
SQL> insert into test_char values('a');
1 row inserted
SQL> insert into test_char values('aa');
1 row inserted
SQL> insert into test_char values('aaa');
1 row inserted
SQL> insert into test_char values('aaaa');
1 row inserted
SQL> insert into test_char values('aaaaaaaaaa');
1 row inserted
注意:最多只能插入10個字節(jié)。否是就報錯。
SQL> insert into test_char values('aaaaaaaaaaa');
insert into test_char values('aaaaaaaaaaa')
ORA-12899: value too large for column "PUB_TEST"."TEST_CHAR"."COLA" (actual: 11, maximum: 10)
3.在Oracle 數(shù)據(jù)類型中使用dump函數(shù)可以查看每一行的內(nèi)部存數(shù)結(jié)構(gòu)。
SQL> select colA, dump(colA) from test_char;
COLA DUMP(COLA)
a Typ=96 Len=10: 97,32,32,32,32,32,32,32,32,32
aa Typ=96 Len=10: 97,97,32,32,32,32,32,32,32,32
aaa Typ=96 Len=10: 97,97,97,32,32,32,32,32,32,32
aaaa Typ=96 Len=10: 97,97,97,97,32,32,32,32,32,32
aaaaaaaaaa Typ=96 Len=10: 97,97,97,97,97,97,97,97,97,97
注意:Typ=96 表示數(shù)據(jù)類型的ID。Oracle為每一種數(shù)據(jù)類型都進(jìn)行了編號。說明char類型的編號是96.
Len =10 表示所在的內(nèi)部存儲的長度(用字節(jié)表示)。雖然***例只存了一個字符’a’,但是它還是占用了10個字節(jié)的空間。
97,32,32,32,32,32,32,32,32,32 表示內(nèi)部存儲方式??梢奜racle的內(nèi)部存儲是以數(shù)據(jù)庫字符集進(jìn)行存儲的。
97正好是字符a的ASCII碼。
可以使用chr函數(shù)把ASCII碼轉(zhuǎn)成字符。
SQL> select chr(97) from dual;
CHR(97)
a
要想知道一個字符的ASCII碼,可以使用函數(shù)ascii
SQL> select ascii('a') from dual;
ASCII('A')
97
32正好是空格的ascii碼值。
Char類型是定長類型。它總會以空格來填充以達(dá)到一個固定寬度。
使用char類型會浪費存儲空間。
Oracle的數(shù)據(jù)類型的長度單位是字節(jié)。
SQL> select dump('漢') from dual;
DUMP('漢')
Typ=96 Len=2: 186,186
可見一個漢字在Oracle中是占用了兩個字節(jié)的。
英文字母或符號只占用一個字節(jié)。
Char(10)最多可存放5個漢字。
以上的相關(guān)內(nèi)容就是對Oracle 數(shù)據(jù)類型的相關(guān)內(nèi)容介紹,望你能有所收獲。
【編輯推薦】