【引】http://hi.baidu.com/zzuhpc/blog/item/b3c5c138f08ebcf53a87cec8.html
1.char

char的長度是固定的,最大支持2000個字節。

char的長度是固定的,比如說,你定義了char(20),即使你你插入abc,不足二十個字節,數據庫也會在abc后面自動加上17個空格,以補足二十個字節;

char是區分中英文的,中文在char中占兩個字節,而英文占一個,所以char(20)你只能存20個字母或10個漢字。

char適用于長度比較固定的,一般不含中文的情況

2.varchar/varchar2

varchar是長度不固定的,最大支持4000個字節。

varchar是長度不固定的,比如說,你定義了varchar(20),當你插入abc,則在數據庫中只占3個字節。

varchar同樣區分中英文,這點同char。

varchar的效率低于char。

varchar2基本上等同于varchar,它是oracle自己定義的一個非工業標準varchar,不同在于,varchar2用null代替varchar的空字符串

varchar/varchar2適用于長度不固定的,一般不含中文的情況

3.nvarchar/nvarchar2

nvarchar和nvarchar2是長度不固定的

nvarchar不區分中英文,比如說:你定義了nvarchar(20),你可以存入20個英文字母/漢字或中英文組合,這個20定義的是字符數而不是字節數

nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占兩個字節

nvarchar/nvarchar2適用于存放中文





orcale 中varchar2 和nvarchar2的區別
在sql ref書中介紹到
1 VARCHAR2(size)
        [BYTE | CHAR]
        Variable-length character string having maximum
        length size bytes or characters. Maximum size is
        4000 bytes, and minimum is 1 byte or 1 character.
        You must specify size for VARCHAR2.
        BYTE indicates that the column will have byte
        length semantics; CHAR indicates that the column
        will have character semantics.
1 NVARCHAR2(size) Variable-length character string having maximum
        length size characters or bytes, depending on the
        choice of national character set. Maximum size is
        determined by the number of bytes required to store
        each character, with an upper limit of 4000 bytes.
        You must specify size for NVARCHAR2.
中文大意:
VARCHAR2(size),可變長度的字符串,其最大長度為 size 個字節。size 的最大值是 4000,而最小值是 1。您必須指定一個 VARCHAR2 的 size。
NVARCHAR2(size),可變長度的字符串,依據所選的國家字符集,其最大長度為 size 個字符或字節。size 的最大值取決于存儲每個字符所需要的字節數,其上限為 4000 個字節。您必須為 NVARCHAR2 指定一個 size。

相同點:都是可變長度字符串(char類型是不變長度),都必須指定大小
不同點:VARCHAR2存放的英文字符只占一個字節,而nvarchar2依據所選的字符集,大多為兩個