Char ,varchar ,nchar,nvarchar 的不同
这四种是SQL SERVER数据库中的数据类型,他们之间存在着很大的差异,在定义字段类型的时候,如何选择和区分这几种数据类型,先要弄清楚他们之间有何区别。
从大的方面来说,可以分为两类。
Char,varchar 是非unicode的字符数据类型。
Nchar,nvarchar 是unicode的字符数据类型。
那么他们之间还有什么不同之处了?
先说char 和varchar之间的不同之处:
Char(n),这是他的表示方法,n是一个介于1到8000之间的值,是不可变长的,也就是说他在存储的过程中,如果输入的字节长度小于n 的话,那么不够的位置将被空格所填充。
也就是说他存储所花费的空间是n 个字符。
在数据的存储中英文字母和数字占一个字节,汉字占两个字节。
Varchar(n),他的n值也是一个介于1到8000之间的值,是可变长的,也就是说他在存储的过程中,如果输入的字节长度小于n的话,他的存储长度就是实际输入字节的长度,不会用空格不全,这样可以大大的节省存储的空间,可以说是他的优点之一。
而他存储所花费的空间就是输入字符的实际长度,n 值是规定他可以输入的最大字符长度。
在数据的存储中英文字母和数字占一个字节,汉字占两个字节。
Nchar(n),他的n之时一个介于1到4000之间的值,是不可变长的,但是他在存储的过程中,不管是英文字母,数字,还是汉字,都占两个字节。
Nvarchar(n),他的n之时一个介于1到4000之间的值,是可变长的,他字符的存储和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 |