您的位置:首页 > 其它

varchar2() 与 nvarchar2() 与 char() 与 nchar()区别与联系

2016-08-11 19:26 405 查看
在Oracle中,使用时候遇到字符串的类型的时候一般都会遇到在选择 varchar2 与 nvarchar2 的时候那么在这里进行一下比较,

首先对于与两个类型的理解是

VARCHAR2    可变长度的字符串    最大长度4000    bytes      可做索引的最大长度749     


NVARCHAR2   
根据字符集而定的可变长度字符串    最大长度4000    bytes


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

2、而VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个 


CHAR固定长度字符域,最大长度可达2000个字节     
 NCHAR多字节字符集的固定长度字符域,长度随字符集而定,最多为2000个字符或2000个字节     
 VARCHAR2可变长度字符域,最大长度可达4000个字符     
 NVARCHAR2多字节字符集的可变长度字符域,长度随字符集而定,最多为4000个字符或4000个字节 



  对于char 与 varchar来说: 



 CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系. 



 
VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以   空间换效率’。 
  


VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row
Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。 


.nvarchar/nvarchar2 

nvarchar和nvarchar2是长度不固定的 
nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数 
nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节 
nvarchar/nvarchar2适用于存放中文 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: