選擇一個正確的數據類型,這看上去再容易不過了,但我們屢屢見到選擇不當的情況。要選擇什么類型來存儲你的數據,這是一個最基本的決定,而且這個決定會在以后的數年間影響著你的應用和數據。因此選擇適當的數據類型至關重要,而且很難事后再做改變,也就是說,一旦選擇某些類型實現了應用,在相當長的時間內就只能“忍耐”,因為你選擇的類型可能不太合適。
上面這段話來自 Thomas Kyte(Oracle公司核心技術集團副總裁)的——《Oracle Database 9i/10g/11g編程藝術》。我對這段話描述的情況感同身受,因此引用了過來。本文第二節(jié)內容來自該書第 12 章第一節(jié)——《Oracle 數據類型概述》,有刪改。
Oracle 數據類型概述
Oracle 提供了 22 種不同的 SQL 數據類型供我們使用,分別如下:
CHAR:這是一種定長字符串,會用空格填充來達到其最大長度。非 null 的 CHAR(10) 總是包含 10 字節(jié)信息,使用默認 NLS 設置,CHAR 最多可以存儲 2000 字節(jié)的信息。
NCHAR:這是一種包含 UNICODE 格式數據的定長字符串。有了 NCHAR 類型,就允許數據庫中包含采用兩種不同字符集的數據:使用數據庫字符集的 CHAR 類型和使用國家字符集的 NCHAR 類型。非 null 的 NCHAR(10) 總是包含 10 個字符的信息,NCHAR 最多可以存儲 2000 字節(jié)的信息。
VARCHAR2:目前這也是 VARCHAR 的同義詞。這是一種變長字符串,與 CHAR 類型不同,它不會用空格填充至最大長度。VARCHAR2(10) 可能包含 0~10 字節(jié)的信息,使用默認 NLS 設置,VARCHAR2 最多可以存儲 4000 字節(jié)的信息。
NVARCHAR2:這是一種包含 UNICODE 格式數據的變長字符串。NVARCHAR2(10) 可以包含 0~10 個字符的信息,NVARCHAR2 最多可以存儲 4000 字節(jié)的信息。
RAW:這是一種變長的二進制數據類型,采用這種數據類型存儲的數據不會發(fā)生字符集轉換。可以把它看作是由數據庫存儲的信息的二進制字節(jié)串。RAW 最多可以存儲 2000 字節(jié)的信息。
NUMBER:這種數據類型能存儲精度多達 38 位的數字。這些數介于 1.0 * 10-130 至 1.0 * 10 126(不含)之間。每個數存儲在一個變長字段中,其長度在 0(尾部的 NULL 列就是 0 字節(jié))~22字節(jié)之間。Ora