Oracle中NVARCHAR2和VARCHAR2及其他

来源:互联网 发布:入我相思门知我相思苦 编辑:程序博客网 时间:2024/05/21 08:37

Oracle中NVARCHAR2和VARCHAR2及其他

NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于:

NVARCHAR2在计算长度时和字符集相关,

例如数据库是中文字符集时,以长度10为例,则 

NVARCHAR2(10)可以存进去10个汉字,如果用来存英文也只能存10个字符。 

VARCHAR2(10)只能存进5个汉字,英文则可以存10个 。

***********************************************************************

CHAR固定长度字符域,最大长度可达2000个字节     

NCHAR多字节字符集固定长度字符域,长度随字符集而定,最多为2000个字符或2000个字节     

VARCHAR2可变长度字符域,最大长度可达4000个字符     

NVARCHAR2多字节字符集可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节 

***********************************************************************

varchar,nvarchar, varchar2,nvarchar2的区别

四个类型都属于变长字符类型:
varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。
nvarchar和nvarchar2的区别和上面一样,   与上面区别在于是根据Unicode   标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。 
 
*****************************************************************************************************************

char 

char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节; 
char是区分中英文的,中文在char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字。 
char适用于长度比较固定的,一般不含中文的情况 

*****************************************************************************************************************

varchar/varchar2 

varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。 
varchar同样区分中英文,这点同char。 
varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串 
varchar/varchar2适用于长度不固定的,一般不含中文的情况 
 
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
2.VARCHAR2把空串等同于null处理,而varchar仍按照空串处理;
3.VARCHAR2字符要用几个字节存储,要看数据库使用的字符集, 大部分情况下建议使用varchar2类型,可以保证更好的兼容性。

*****************************************************************************************************************

nvarchar/nvarchar2 

nvarchar和nvarchar2是长度不固定的 
nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数 
nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节 
nvarchar/nvarchar2适用于存放中文


原创粉丝点击