(1) 定义:
char: 固定长度,存储ANSI字符,不足的补英文半角空格。
nchar: 固定长度,存储Unicode字符,不足的补英文半角空格
varchar: 可变长度,存储ANSI字符,根据数据长度自动变化。
nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化。
含有var就说明是可变的,动态的。
固定长度就是位数确定,例如:手机号11位,就可以定义为char(11),身份证号18位就可以定义为char(18)。
可变长度就是输入多少位就是多少位:例如varchar(20),最大长度是20,在长度不超过20的基础上,如果输入了10位就存储了10位。
ANSI字符:主要是以单字节来存储数据,一般适合英文。
Unicode字符:主要是以双字节来存储数据,一般一个汉字占两个字节,所以数据库某个字段可能有中文时,就需要nvarchar。
(2) nvarchar与varchar优缺点:
nvarchar的优点:判断字符串的时候可以不需要考虑中英文两种字符的差别,可以避免程序中乱码的问题。
nvarchar的 缺点:存储英文字符会增大一倍的存储空间.但是在存储代价已经很低廉的情况下,优先考虑兼容性会给你带来更多好处的,效率没有varchar高。
(3) 总结如何使用:
如果你肯定存储的数据长度,而且不包中文的,可以选择char类型。
如果肯定存储的数据长度,但可能包括中文,可以选择nchar类型。
如果不确定存储的数据长度,存储只有英文、数字的最好用varchar。
如果不确定存储的数据长度,也有可能有中文,可以选择nvarchar类型。