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开头的数据类型。
浙公网安备 33010602011771号