char 类型,无论实际存储多少字符,都占用指定的长度。如果超过则截断
varchar 类型,动态分配存储空间,但由于他是从 char 类型派生出来的,所以延用了 char 类型的宽度设置

解决方案 »

  1.   

    如果你知道字符的长度是多少且都相似的话就用CHAR,
    如果字符的长度你也不确定且长度差别很大的话则用VARCHAR,
      

  2.   

    char是固定长度类型,不足的以空格填满,超长的截断。SQL Server里面不用声明长度的都是大字段,比如 text ntext image 实际上指定长度,是一个约束。 估计 varchar(50) 和varchar(8000)  性能上有区别。
      

  3.   

    不仅仅是长度上限制的区别,主要的区别在于存储空间的区别。我用sql手册的例子说明吧
    char(4) 和 varchar(4) 保存 
    字符 abc 占用字节 4  / 3
    字符 abcd 占用字节 4 / 5