总结一下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)