char,varchar,nchar,nvarchar
学习于网络:
1. char 和 varchar
相同点:1位就是1个字节,每个英文字符和数字都占一个字节,而一个中文的字符会占两个字节。
不同点:
a. char是定长存储,如定义char(10),实际存储的值为'hello', Sql Server会自动补充空格,填满10位。[即没有达到10个字节,都要占去10个字节]
b.varchar是可变长存储,实际存储值占了多少个字节就是多少个字节,不会以空格来填满。
2. nchar 和 nvarchar
相同点:1位就是2个字节,储数据时采用的是 Unicode元码,为了与其他多种字符的转换,如中文,音标等, 一个英文字符和一个中文字符所占的空间是相同的,都是两个字节。[即所有字符都占用两个字节]
不同点:nchar是定长存储,nvarchar是可变长存储
3.
char,varchar -- 最多8000个英文,4000个汉字[1位就是1个字节,定义varchar(100),即100位,100个字节,因1个汉字需要2个字节,故可以存储50个汉字]
nchar,nvarchar --可存储4000个字符,无论英文还是汉字[1位就是2个字节,如定义nvarchar(4000),即有4000位,8000个字节,则可以存储4000个字符,无论英文还是汉字]
4.
支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。
如果使用 char 或 varchar:
如果希望列中的数据值大小接近一致,请使用 char。
如果希望列中的数据值大小显著不同,请使用 varchar。