本文主要介紹的是Oracle 數據類型,通過實例的演示,我們將全面分析Oralce的基本的數據類型以及它們不同的存儲方式。我們現在就以Oracle 10G作為為基礎,來介紹oralce 10g引入新的數據類型。
讓你對Oracle數據類型有一個全新的認識。揭示一些不為人知的秘密和被忽略的盲點。從實用和優化的角度出發,討論每種Oracle 數據類型的特點。從這裡開始Oracle之旅!
第一部份 字符類型
1.1 char
定長字符串,會用空格來填充來達到其最大長度,最長2000個字節。
1. 新建一個測試表test_char.,只有一個char類型的列。長度為10
- SQL> create table test_char(colA char(10));
- Table created
2. 向這個表中插入一些數據。
- 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個字節。否是就報錯。
- 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. 使用dump函數可以查看每一行的內部存數結構。
- 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 表示Oracle 數據類型的ID。Oracle為每一種數據類型都進行了編號。說明char類型的編號是96. Len =10 表示所在的內部存儲的長度(用字節表示)。雖然第一例只存了一個字符’a’,但是它還是占用了10個字節的空間。 97,32,32,32,32,32,32,32,32,32 表示內部存儲方式。
可見Oracle的內部存儲是以數據庫字符集進行存儲的。 97正好是字符a的ASCII碼。 可以使用chr函數把ASCII碼轉成字符。