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。

posted on 2013-04-13 10:41  Gcam  阅读(139)  评论(0编辑  收藏  举报

导航