加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

db2 char varchar nvarch 区别

(2010-12-15 15:42:50)
标签:

db2

char

varchar

nvarchar

it

分类: 数据库

character   就是char,
1.最大长度不同,char   最大254   bytes,varchar   最大   32672   bytes
  存储不同
char(n)     在数据库占用    个字节,在数据库中以空格补足,但在取出来时末尾的空格将被去掉

varchar(n)   在数据库中至少占用1个字节,在数据库中末尾的空格将自动去掉,实际占用录入数据长度   +1   或者   +2   字节。  

  数据长度
L+1   bytes   L <=M       0 <=M <=256
L+2   bytes   L <=M       256 <M <=32672
在数据库中末尾的空格将自动去掉


char   一般是用来存储一些定长的字符串,对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义 char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间。因为是固定长度,所以速度效率高。比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。

varchar  主要是存储不定长的字符串 Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"

long   varchar也是存储不定长的字符串,但是他的长度比varchar要长,varchar 32700 (ms sql server varchar 8000),而long   varchar更长,为32700。
char,varchar类型的字段可以存放到缓冲池中,而l定义long   varchar类型的字段,db2不会预先为此字段分配内存,也就是说在查询时,db2对此字段的内容不会预先把他放到缓冲池中,因此查询效率比较低下。


Nchar类型和Nvarchar类型是怎么一回事呢?为了与其他多种字符的转换,如中文,音标等,对每个英文(ASCII)字符都占用2个字节,对一个 汉字也占用两个字节,所有的字符都占用2个字节。
nvarchar(n):可变长度 Unicode 数据,字节的存储大小是所输入字符个数的两倍,就是说它是双字节来存储数据的。如果存储数据如果存在单字节时,它也是以双字节来占用存储空间的。varchar一般适用于英文和数字,Nvarchar适用中文和其他字符,其中N表示Unicode常量,可以解决多语言字符集之间的转换问题

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有