【引】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依据所选的字符集,大多为两个