Oracle字串資料型別簡述
去 IOE 的前提是瞭解,才能談去。Oracle 提供了22種資料型別,其中專門用於儲存字串的有6類。
字串相關資料型別一覽
- CHAR : 定長型別,用 空格 來填充保證達到最大的長度;最多儲存 2000 位元組資訊。
- NCHAR : 與 CHAR 的差異是,支援 Unicode 格式的資料。
- VARCHAR2 : 即 VARCHAR,變長型別,末尾不填充 空格 ;最多 4000 位元組。(12c 後,可支援32767位元組)
- NVARCHAR2 : 與 VARCHAR2的差異是,支援 Unicode 格式的資料。
- RAW : 變長的二進位制資料型別,不會發生資料字符集轉換;最多 2000 位元組。(12c 後,可支援32767位元組)
- CLOB :10g後支援最多儲存 (4GB-1)×(資料庫塊大小) 位元組;受字符集轉換的影響。
字串語法
型別 | <SIZE> 的說明 | 示例 |
---|---|---|
VARCHAR2( <SIZE><BYTE|CHAR> ) | 位元組或字元數,值域(1-4000),整數。 | A VARCHAR2( 20 BYTE ) |
CHAR( <SIZE><BYTE|CHAR> ) | 位元組或字元數,值域(1-2000),整數。 | A CHAR( 20 CHAR ) |
NVARCHAR2( <SIZE> ) | 字元數,值域 >0,上限與字符集有關,整數。 | A NVARCHAR2( 20 ) |
NCHAR2( <SIZE> ) | 字元數,值域 >0,上限與字符集有關,整數。 | A NCHAR2( 20 ) |
字串的儲存
CHAR、 VARCHAR2、 NCHAR、 NVARCHAR2都採用相同的儲存格式.即 CHAR、NCHAR 實際是基於VARCHAR2、NVARCHAR2實現。
底層資料格式設計
- 資料塊中,分為2部分
- 資料長度:1-3個位元組
- 資料本身
- 資料長度的設計
- 空資料即 NULL:單位元組值 0xFF
- 長度≤ 250:單位元組值 0x01-0xFA
- 長度>250:3位元組值表示
- 第1標誌位元組固定為:0xFE
- 第2、3位元組為實際長度
示例
- VARCHAR(20) Hello World
<- | 數 | 據 | -> | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
11 | H | e | l | l | o | W | o | r | l | d | |
長度 |
- CHAR(80) Hello World
<- | 數 | 據 | -> | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
80 | H | e | l | l | o | W | o | r | l | d | ||
長度 | 69個空格 |
注意點
- CHAR、NCHAR 空間效率利用率低,因佔用空間與資料無關,僅於列定義有關。
- CHAR、NCHAR 容易給應用帶來混亂,因資料末尾會補充若干空格,導致搜尋結果經常非預期。
- 設定 MAX_STRING_SIZE為 EXTENDED後,VARCHAR2,NVARCHAR2,RAW才可以支援32767位元組的儲存。Oracle 預設是關閉,因啟用後想再返回 STANDARD 會很痛苦。
查詢工具推薦: DUMP 函式
作用:顯示某個資料的資料型別程式碼、長度(單位為位元組)及其在資料庫內部實際儲存的形式(字符集名),語法為:
DUMP( expression [, return_format] [, start_position] [,length])
擴充套件
- 關於字符集,請搜尋 NLS(National Language Support)相關資料。
相關文章
- Redis Hashes 資料型別簡述Redis資料型別
- Oracle資料型別簡介Oracle資料型別
- 基本資料型別與字串型別資料型別字串
- 簡述SSl證書型別型別
- 資料型別之字串篇資料型別字串
- 基本資料型別之字串資料型別字串
- 簡述oracle資料庫結構Oracle資料庫
- Oracle資料型別Oracle資料型別
- Oracle 資料型別Oracle資料型別
- Mysql資料庫學習(二):資料型別(數值型別 日期和時間型別 字串型別)MySql資料庫資料型別字串
- Oracle資料型別對應Java型別Oracle資料型別Java
- 【轉】ORACLE資料型別Oracle資料型別
- Oracle anydata資料型別Oracle資料型別
- ORACLE NUMBER資料型別Oracle資料型別
- [轉]oracle資料型別Oracle資料型別
- Python - 基本資料型別_str 字串Python資料型別字串
- Swift-02.字串和資料型別Swift字串資料型別
- javascript數字和字串資料型別轉換簡單介紹JavaScript字串資料型別
- clickhouse資料型別簡介資料型別
- Python基礎:資料型別-字串(7)Python資料型別字串
- Oracle的number資料型別Oracle資料型別
- Oracle OCP(19):資料型別Oracle資料型別
- Oracle資料型別介紹Oracle資料型別
- oracle 資料型別轉換Oracle資料型別
- Oracle的raw資料型別Oracle資料型別
- ORACLE TIMESTAMP資料型別Oracle資料型別
- ORACLE的資料型別(轉)Oracle資料型別
- java簡單資料型別(轉)Java資料型別
- GO語言學習——基本資料型別字串Go資料型別字串
- oracle中date資料型別與timestamp資料型別的轉換Oracle資料型別
- oracle將表中date資料型別修改為timestamp資料型別Oracle資料型別
- Oracle - LOB(大物件資料型別)Oracle物件資料型別
- Oracle8 資料型別(轉)Oracle資料型別
- oracle-複合資料型別Oracle資料型別
- Oracle中常用的資料型別Oracle資料型別
- 不簡單的基本資料型別資料型別
- python 資料處理(字串擷取、()\[]\{}資料型別、{}字典資料取值)Python字串資料型別
- oracle hint簡述Oracle