Char ,varchar ,nchar,nvarchar 的不同

 

这四种是SQL SERVER数据库中的数据类型,他们之间存在着很大的差异,在定义字段类型的时候,如何选择和区分这几种数据类型,先要弄清楚他们之间有何区别。

从大的方面来说,可以分为两类。

 

Char,varchar 是非unicode的字符数据类型。

Nchar,nvarchar unicode的字符数据类型。

 

那么他们之间还有什么不同之处了?

 

先说char varchar之间的不同之处:

 

Char(n),这是他的表示方法,n是一个介于18000之间的值,是不可变长的,也就是说他在存储的过程中,如果输入的字节长度小于n 的话,那么不够的位置将被空格所填充。

也就是说他存储所花费的空间是n 个字符。

在数据的存储中英文字母和数字占一个字节,汉字占两个字节。

 

Varchar(n),他的n值也是一个介于18000之间的值,是可变长的,也就是说他在存储的过程中,如果输入的字节长度小于n的话,他的存储长度就是实际输入字节的长度,不会用空格不全,这样可以大大的节省存储的空间,可以说是他的优点之一。

而他存储所花费的空间就是输入字符的实际长度,n 值是规定他可以输入的最大字符长度。

在数据的存储中英文字母和数字占一个字节,汉字占两个字节。

 

Nchar(n),他的n之时一个介于14000之间的值,是不可变长的,但是他在存储的过程中,不管是英文字母,数字,还是汉字,都占两个字节。

 

Nvarchar(n),他的n之时一个介于14000之间的值,是可变长的,他字符的存储和nchar型一样。不管是英文字母,数字,还是汉字,都占两个字节。

 

在数据检索中,一般来说char型字段的数据是最快的,varchar,nvarchar型字段其次。

在所存数据长度不一的情况下,varcahr型字段所占空间最少,char,nvarchar其次

 

下面对这几种数据类型之间的不同做个统计:

 

Char

Varchar

Nchar

Nvarchar

N的取值

1-8000

1-8000

1-4000

1-4000

数据存储

不可变长

可变长

不可变长

可变长

数据类型

unicode

unicode

Unicode

Unicode

英文字母,数字在存储中所占字节

1

1

2

2

汉字在存储所占字节

2

2

2

2