总结一下char,nchar,varchar,nvarchar之间的区别:
只要弄清楚以下两个概念,基本就可以区分char,nchar,varchar,nvarchar的相同点和不同点
1)那么Unicode字符和非Unicode字符的区别是什么的?
Unicode字符:无论你存的是汉字还是英文数字,每个字符都表示两个字节(假如长度为10,无论是英文还是汉字都只可以存5个)
非Unicode字符:英文数字为1个字节,汉字表示两个字节(假如长度为10,则只可以保存5个汉字,或者10个英文)
2)定长和变长的概念
定长:当输入数据的长度没有达到指定的长度是,会自动将英文空格补充在其后面(例如:char(10)当输入‘A’时,数据库中实际存储的是A后面加个9个英文空格)
变长:实际存储空间是可变的,不会以空格填充
例如:Char 和 nchar
这两者都是定长的,当输入数据的长度没有达到指定的长度是,会自动将英文空格补充在其后面(例如:char(10)当输入‘A’时,数据库中实际存储的是A后面加个9个英文空格)
Nchar也是定长的,和char最大的区别是前缀为n的表示Unicode字符,而char为非Unicode字符
相同点:两者都是定长
不同点:一个是Unicode字符,一个是非Unicode字符
|
相同点 |
不同点 |
Char |
定长 |
非Unicode字符 |
nchar |
定长 |
Unicode字符 |
|
相同点 |
不同点 |
varchar |
变长 |
非Unicode字符 |
nvarchar |
变长 |
Unicode字符 |
|
相同点 |
不同点 |
Char |
非Unicode字符 |
定长 |
varchar |
非Unicode字符 |
变长 |
|
相同点 |
不同点 |
nchar |
Unicode字符 |
定长 |
nvarchar |
Unicode字符 |
变长 |
总结:以n为前缀的,表示的是Unicode字符(nchar,nvarchar)
有var的,表示的是变长(varchar,nvarchar)