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 anydata資料型別Oracle資料型別
- ORACLE NUMBER資料型別Oracle資料型別
- 資料型別之字串篇資料型別字串
- 基本資料型別之字串資料型別字串
- Oracle資料型別對應Java型別Oracle資料型別Java
- Python - 基本資料型別_str 字串Python資料型別字串
- Oracle OCP(19):資料型別Oracle資料型別
- Oracle的number資料型別Oracle資料型別
- Python基礎:資料型別-字串(7)Python資料型別字串
- clickhouse資料型別簡介資料型別
- Oracle和sqlserver資料型別對應OracleSQLServer資料型別
- Oracle基本資料型別儲存格式淺析——RAW型別Oracle資料型別
- python 資料處理(字串擷取、()\[]\{}資料型別、{}字典資料取值)Python字串資料型別
- Python3學習-(基本資料型別-字串)Python資料型別字串
- Redis 五大資料型別之 String(字串)Redis大資料資料型別字串
- Python學習教程之基本資料型別字串Python資料型別字串
- GO語言學習——基本資料型別字串Go資料型別字串
- 資料型別與函式索引-Oracle篇資料型別函式索引Oracle
- 不簡單的基本資料型別資料型別
- 簡單資料型別和引用資料型別對應棧和堆示意圖資料型別
- SAP MM UB型別的退貨STO流程簡述型別
- XML Schema 字串資料型別及約束詳解XML字串資料型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 資料型別: 資料型別有哪些?資料型別
- 1.1. Oracle 資料庫使用者型別Oracle資料庫型別
- [20191219]oracle timestamp資料型別的儲存.txtOracle資料型別
- 1、變數和簡單資料型別變數資料型別
- python:變數和簡單資料型別Python變數資料型別
- SCSS 字串 型別CSS字串型別
- String:字串型別字串型別
- TypeScript 字串型別TypeScript字串型別
- 區別值型別資料和引用型別資料型別
- 1.1.1python基本資料型別之數字和字串Python資料型別字串