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

char的長(zhǎng)度是固定的,最大支持2000個(gè)字節(jié)。

char的長(zhǎng)度是固定的,比如說,你定義了char(20),即使你你插入abc,不足二十個(gè)字節(jié),數(shù)據(jù)庫也會(huì)在abc后面自動(dòng)加上17個(gè)空格,以補(bǔ)足二十個(gè)字節(jié);

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

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

2.varchar/varchar2

varchar是長(zhǎng)度不固定的,最大支持4000個(gè)字節(jié)。

varchar是長(zhǎng)度不固定的,比如說,你定義了varchar(20),當(dāng)你插入abc,則在數(shù)據(jù)庫中只占3個(gè)字節(jié)。

varchar同樣區(qū)分中英文,這點(diǎn)同char。

varchar的效率低于char。

varchar2基本上等同于varchar,它是oracle自己定義的一個(gè)非工業(yè)標(biāo)準(zhǔn)varchar,不同在于,varchar2用null代替varchar的空字符串

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

3.nvarchar/nvarchar2

nvarchar和nvarchar2是長(zhǎng)度不固定的

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

nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占兩個(gè)字節(jié)

nvarchar/nvarchar2適用于存放中文





orcale 中varchar2 和nvarchar2的區(qū)別
在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),可變長(zhǎng)度的字符串,其最大長(zhǎng)度為 size 個(gè)字節(jié)。size 的最大值是 4000,而最小值是 1。您必須指定一個(gè) VARCHAR2 的 size。
NVARCHAR2(size),可變長(zhǎng)度的字符串,依據(jù)所選的國(guó)家字符集,其最大長(zhǎng)度為 size 個(gè)字符或字節(jié)。size 的最大值取決于存儲(chǔ)每個(gè)字符所需要的字節(jié)數(shù),其上限為 4000 個(gè)字節(jié)。您必須為 NVARCHAR2 指定一個(gè) size。

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