varchar存放的字符长度最大为30,可以更少。
char(30)存放的字符长度即使不足30,也会自动以空格填充左边的位置,直到30。

解决方案 »

  1.   

    char 数据类型是固定长度数据类型。如果一个比列的长度小的值被插入到 char NOT NULL 列中,则值的右边以空格填补剩余的位置。例如,如果一个列被定义为 char(10) 并且要存储的数据是"music",则 SQL Server 将这个数据存储为"music_____",这里"_"表示空格。当创建一个 char NULL 列时,如果 ANSI_PADDING 是ON,它的表现就如同一个 char NOT NULL列:值的右边按照列的大小进行填补。当创建一个 char NULL 列时,如果 ANSI_PADDING 是 OFF,它的表现就如同一个将 ANSI_PADDING 设置为 OFF 的 varchar 列:尾随空格将被截断。varchar 是可变长度的数据类型。比列的长度小的值,不会按照列的长度在其右边填补。当创建列时,如果 ANSI_PADDING 选项设为 OFF,则所有存储在列中的字符值的尾随空格都将被截断。当创建列时,如果 ANSI_PADDING 设为 ON,则尾随空格不被截断
      

  2.   

    char(30)占用空间更多,但是,因为长度固定,参与运算时速度更快。
      

  3.   

    谢谢两位!
    再请问friendliu(无为) ,ANSI_PADDING选项什么意思?
      

  4.   

    char(30)与varchar(30)char(30)  不管你保存的字符数是多少,它都固定占用30个字节的存储空间
    varchar(30) 只占用你保存的字符数一致的空间.
    但char(30)的检索速度快过varchar(30)
      

  5.   

    varchar(30)存放的字符长度最大为30,可以更少。
    char(30)存放的字符如果不足30,也会自动以空格来填充,直到30资料:
    字段类型
        不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。字符型数据
        字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。例如,你可以把从HTML form的文本框中搜集到的信息放在字符型字段中。
        要建立一个字段用来存放可变长度的字符串信息,你可以使用表达式 VARCHAR。考虑你前面创建的表guestbook:     CREATE  TABLE  guestbook (visitor VARCHAR(40),comments TEXT,entrydate 
                                             DATETIME)    在这个例子中,字段visitor的数据类型为VARCHAR。注意跟在数据类型后面的括号中的数字。这个数字指定了这个字段所允许存放的字符串的最大长度。在这个例子中,字段visitor能存放的字符串最长为四十个字符。如果名字太长,字符串会被截断,只保留四十个字符。
        VARCHAR类型可以存储的字符串最长为255个字符。要存储更长的字符串数据,可以使用文本型数据(下一节中讲述)。
        另一种字符型数据用来存储固定长度的字符数据。下面是一个使用这种数据类型的例子:     CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate 
                                             DATETIME)    在这个例子中,字段visitor被用来存储四十个字符的固定长度字符串。表达式CHAR指定了这个字段应该是固定长度的字符串。
        VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。
        现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。
        当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。
        VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要。文本型数据
        字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。
        这里有一个使用文本型数据的例子:    CREATE  TABLE  guestbook (visitor VARCHAR(40),comments TEXT,entrydate 
                                             DATETIME)    在这个例子中,字段comments被用来存放访问者对你站点的意见。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。
        当你从HTML form的多行文本编辑框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。
        警告:
        一旦你向文本型字段中输入了任何数据(甚至是空值),就会有2K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。
      

  6.   

    char(30)与varchar(30)char(30)  不管你保存的字符数是多少,它都固定占用30个字节的存储空间
    varchar(30) 只占用你保存的字符数加一的字节空间.如:保存'A'点有两个字节
      

  7.   

    char(30)与varchar(30)char(30)  不管你保存的字符数是多少,它都固定占用30个字节的存储空间
    varchar(30) 保存實際長度, 最多只占用30個字节.
    char(30)的检索速度快过varchar(30)