Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113797
  • 博文数量: 39
  • 博客积分: 2530
  • 博客等级: 少校
  • 技术积分: 355
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-01 17:34
文章分类
文章存档

2011年(1)

2010年(28)

2009年(2)

2008年(8)

我的朋友

分类: Oracle

2010-03-31 10:30:20

nvarchar和varchar的区别

一、
varchar:非 Unicode 的字符数据
nvarchar:  Unicode 数据
补充:
UNICODE同现在流行的代码页最显著不同点在于:UNICODE是两字节的全编码。对于ASCII字符它也使用两字节表示。代码页是通过高字节的取值范围来确定是ASCII字符。还是汉字的高字节。如果发生数据损坏。某处内容破坏。则会引起其后汉字的混乱。UNICODE则一律使用两个字节表示一个字符。最明显的好处是它简化了汉字的处理过程。
二、
nvarchar:
不管是一个字符还是一个汉字,都存为2个字节
varchar:
汉字是2个字节,其他字符存为1个字节
三、
varchar(n)
长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。

nvarchar(n)

包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。
四、
也就是说一个汉字既可以存在varchar中,也可以存在nvarchar中.
那么对于汉字或者Unicode 数据到底存在varchar和nvarchar有什么区别呢?
下面例子说明一下:一个汉字占varchar(2),只占nvarchar(1),而字母只占varchar(1),那么在数据库字段求长度的时候,用varchar你就不一定知道它确切的知道它到底有几个字,如果用nvarchar,那么汉字也是nvarchar(1),字母也是nvarchar(1),那么已经很明显了.
区别2:varchar的检索快于nvarchar.
阅读(3001) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~