char、varchar、nchar、nvarchar的区别

                对于程序中的string型字段,SQLServer中有char、varchar、nchar、nvarchar四种类型来对应(暂时不考虑text和ntext),开建立数据库中,对这四种类型往往比较模糊,这里做一下对比。

         1、定长或变长
          所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;有var前缀的,表示是实际存储空间是变长的,比如varchar,nvarchar变长字符数据则不会以空格填充,比较例外的是,text存储的也是可变长。

          以上说的可能大家还是不大理解,用一种通俗易懂的方法来说吧。

          比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间;而varchar(10)是你用了几个字节就占几个字节。

         2、Unicode或非Unicode
          数据库中,英文字符只需要一个字节存储就足够了,但汉字和其他众多非英文字符,则需要两个字节存储。如果英文与汉字同时存在,由于占用空间数不同,容易造成混乱,导致读取出来的字符串是乱码。Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。而前缀n就表示Unicode字符,比如nchar,nvarchar,这两种类型使用了Unicode字符集。(即只要占用最少是俩哦,一对一对的。)
         3、字段容量
          char,varchar :最多8000个英文,4000个汉字
          nchar,nvarchar :可存储4000个字符,无论英文还是汉字
         4、使用
         如果数据量非常大,又能100%确定长度且保存只是ansi字符,那么char 
         能确定长度又不一定是ansi字符或者,那么用nchar; 
         对于超大数据,如文章内容,使用nText 
         其他的通用nvarchar

         大家明白了吗?以后再也不要稀里糊涂的用了。

你可能感兴趣的:(char,varchar,nchar)