有什么区别,建数据库的时候用哪一个好?

解决方案 »

  1.   


    /*char是固定长度,   
    varchar是可变长度.   
    如:   
    定义为char(8)   
    插入值的时候,如果不够8个长度,用空格补上~而使用varchar(8),则不用,长度为字符串的实际长度~
    */
      

  2.   

    一个是固定长度,一个是不固定长度的。如果字段的长度变化比较大用varchar,反之用char。
      

  3.   

    一个可变,一个不可变,一般选VARCHAR()
    视情况而定吧!
      

  4.   

    来自联机丛书:char 和 varchar
    固定长度 (char) 或可变长度 (varchar) 字符数据类型。char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。varchar[(n)]长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
      

  5.   


    varchar[(n)]
    长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节所输入的数据字符长度可以为零
    DECLARE @A VARCHAR(6)
    SET @A=''
    SELECT LEN(@A)
    SET @A='123'
    SELECT LEN(@A)
    SET  @A='12345678'
    SELECT @A-----------
    0(1 行受影响)
    -----------
    3(1 行受影响)
    ------
    123456(1 行受影响)
      

  6.   

    看来得重新改数据库了 ,被我全弄成char了  涉及固定长度编码的就一两个,其他的应该都该varchar了 
      

  7.   

    好像有一个可以一次性把CHAR类型改成VARCHAR的!!不过不记得在哪了??
      

  8.   

    char 和 varchar 固定长度 (char) 或可变长度 (varchar) 字符数据类型。 char[(n)] 长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。 varchar[(n)] 长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
      

  9.   


    sp_configure 'allow updates','1'   
     go   
     reconfigure with override  
     go   
     ---   update t1 set t1.Xtype=167 and Length=200
     from SysColumns t1,SysObjects t2 where t1.Id=t2.Id and t2.Xtype='U' and t1.XType=175
     ---    
     go   
       
     -- 修改完後再設定不允許修改更新   
     sp_configure 'allow updates','0'   
     go   
     reconfigure with override  
    2000的話可以這樣來該
      

  10.   

    char是固定长度,  不会过滤两端的空格 
    varchar是可变长度. 会过滤两端的空格
      

  11.   

    char类型的数据是固定长度的,如果存储的数据长度不足指定长度,后面就用空白字符补齐相应的位数。如果超出指定长度,内容就被截断。
    varchar类型数据是可变长度的。如果存储的数据长度不足指定长度,那么存储实际数据的长度,如果超出指定长度,内容就被截断。
    例如:
    c1 char(6) set c1 = '123' print c1  结果是:'123   ' 注意有空白
                set c1 = '1234567' print c1 结果是:'123456' 被截断c2 varchar(6) set c2 = '123'  print c2 结果是:'123' 注意没有空白
                  set c2 = '1234567' print c2 结果是:'123456' 被截断
      

  12.   

    1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc",对于CHAR (10),表示你存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR2 (10)则只占用3个字节的长度,10只是最大值,当你存储的字符小于10时,按实际长度存储。 
    2.CHAR的效率比VARCHAR2的效率稍高。 
    3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。 
      

  13.   

    一般用varchar.
    比如char和varchar长度都为10,
    但是你插入一个长度为6的字符,如abcdef
    如果你选择的是char类型,那么它会在abcdef后面补四个空格,
    varchar的不同之处就在于它不会填补空格。
      

  14.   

    Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节 
    char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节 
    Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian" 
    而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格, 
    就是把它填满为100个字节)。 
    由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格 
    去掉! 
      

  15.   

    char 和 varchar
    固定长度 (char) 或可变长度 (varchar) 字符数据类型。char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。varchar[(n)]长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
      

  16.   

    一般用varchar. 
    比如char和varchar长度都为10, 如果你选择的是char类型,那么它会在abcdef后面补四个空格, 
    varchar的不同之处就在于它不会填补空格。select  datalength(cast(''as varchar))
    0
    select  datalength(cast(''as char))
    30
      

  17.   

    char 固定了长度 而varchar是可变的 
      

  18.   

    char 由于是固定长度所以插入数据的时候效率较高
    vachar 是可变长度所以插入数据的时候会判断数据的长度并去掉多余的空格所以效率相对较低
    但是可以节省空间,避免无谓浪费
    空间和时间看你选哪个了