varchar [ ( n | max ) ] 
可變長度,非 Unicode 字元資料。n 可以是 1 到 8,000 的值。max 表示最大儲存體大小是 2^31-1 位元組。儲存體大小是輸入資料的實際長度再加上 2 位元組。看sql 2005 中的幫助,不知道這個2^31-1是怎麽來的?一個字符是一個字節還是一位?

解决方案 »

  1.   

    max 指示最大存储大小是 2^31-1 个字节。也就是说varchar(max)的最大长度为2^31-1个字节,而不是8000。试试这代码就知道:
    create table xtest (col varchar(max))
    insert into xtest select replicate('a',8000)
    update xtest set col=col+'123'
    select len(col) from xtest
    drop table xtest
    /*
    --------------------
    8003
    */
      

  2.   

    varchar  中的数字表示字节数,一个汉字为2字节.
    -------------------------------------------不知道這個2^31-1是怎麽來的
    ========================
    2^31-1就是微软定出来的,微软根据什么定出来的就不清楚,我们只能使用.
    sql2000中只有8000我们也只能接受.
      

  3.   

    不知道這個2^31-1是怎麽來的?因为varchar(max)则可以存储多达2G的数据,而2^31-1 近等于(2G)
    一個字符是一個字節還是一位?
    一个汉字占两个字节,一个字母为一个字节,一个字节8比特
      

  4.   

    llj0209013 水!!!llj0209013 水!!!llj0209013 水!!!