oracle ( char nchar varchar2 nvarchar2 )


char
固定長度,非 Unicode 字符數據,長度為 n 個字節。n 的取值范圍為 1 至 8,000,存儲大小是 n 個字節。char 的 SQL 2003 同義詞為 character。

varchar2
可變長度,非 Unicode 字符數據。n 的取值范圍為 1 至 8,000。max 指示最大存儲大小是 2^31-1 個字節。存儲大小是輸入數據的實際長度加 2 個字節。所輸入數據的長度可以為 0 個字符。SQL-2003 中的 varchar2 就是 char varying 或 character varying。

nchar
n 個字符的固定長度的 Unicode 字符數據。n 值必須在 1 到 4,000 之間(含)。存儲大小為兩倍 n 字節。nchar 的 SQL-2003 同義詞為 national char 和 national character。

nvarchar2
可變長度 Unicode 字符數據。n 值在 1 到 4,000 之間(含)。max 指示最大存儲大小為 2^31-1 字節。存儲大小是所輸入字符個數的兩倍 + 2 個字節。所輸入數據的長度可以為 0 個字符。nvarchar2 的 SQL-2003 同義詞為 national char varying 和 national character varying。

char,varchar2
最多8000個英文,4000個漢字

nchar,nvarchar2
可存儲4000個字符,無論英文還是漢字

char,nchar
定長,速度快,占空間大,需處理

varchar2,nvarchar2
變長,速度慢,占空間小,無需處理
定長就是長度固定的,當輸入的數據長度沒有達到指定的長度時將自動以英文空格在其后面填充,使長度達到相應的長度。
變長字符數據則不會以空格填充,比較例外的是,text存儲的也是可變長。
1、CHAR。CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間,不足的自動用空格填充,所以在讀取的時候可能要多次用到trim()。

2、varchar2。存儲變長數據,但存儲效率沒有CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為 varchar2(10)是最合算的。varchar2類型的實際長度是它的值的實際長度+1。為什么“+1”呢?這一個字節用於保存實際使用了多大的長度。從空間上考慮,用varchar2合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

3、NCHAR、Nvarchar2、NTEXT。這三種從名字上看比前面三種多了個“N”。它表示存儲的是Unicode數據類型的字符。我們知道字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。nchar、 nvarchar2的長度是在1到4000之間。和char、varchar2比較起來,nchar、nvarchar2則最多存儲4000個字符,不論是英文還是漢字;而char、varchar2最多能存儲8000個英文,4000個漢字。可以看出使用nchar、nvarchar2數據類型時不用擔心輸入的字符是英文還是漢字,較為方便,但在存儲英文時數量上有些損失。
所以一般來說,如果含有中文字符,用nchar/nvarchar2,如果純英文和數字,用char/varchar2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM