char、nchar、varchar和nvarchar的区别

char是定长的,char(n)中的n的大小介于1到8000之间,单位是字节;=> n的值决定了char所占的空间大小

nchar是定长的,处理Unicode编码的字符(所有的字符用两个字节表示),char前面的n的意义表示可用于处理Unicode数据类型。nchar(n)中的参数n介于1到4000,单位是字符数(每个字符占2个字节)。同上,该类型的字段所占空间的大小由nchar后括号中n决定

varchar是变长的,varchar(n)中的n只是它能存储的最大长度,而不是该字段实际占用的空间大小,n的值介于1到8000。var代表该类型是变长的,即字段占用的空间为字段实际的大小。

nvarchar是变长的,同时可用于处理Unicode编码的字符,nvarchar(n)中的n的值介于1到4000,单位是字符数(同nchar)。

 

因为每个字段的最大存储空间不能超过8K,所以尽管char、nchar、varchar和nvarchar的参数值不同,但都是为了遵循不大于8K的限制。

其实,上面的数据类型只要把握住两点规律就比较好理解了:

① 开头为n的数据类型,表示可以存储Unicode字符,每个字符占2个字节。

② 带var的数据类型,表示该字段是变长的。即字段占用的空间以字段实际存的字符数计算(nvarchar每个字符占2个字节,varchar每个字符占1个字节)。

注:不带var的数据类型是定长的,即无论该字段是否存储数据/字符的个数是否达到最大个数,它占用的空间都是一定的。

变长和非变长的区别就是:

    非变长字段所占空间是固定的,由参数中n决定;变长字段所占空间是不固定的,由实际存储字符数决定;

 

Q:何时使用n开头的数据类型?何时使用非n开头的数据类型?

A:如果要存储的字段值中只有英文字符和数字,就使用不带n的数据类型; 如果字段值有双字节字符(中文、韩文等)就使用n开头的数据类型。

posted on 2014-11-10 15:51  Leon-LYH  阅读(239)  评论(0)    收藏  举报

导航