表里某一列可能要存8000以上的字符,但没用过varchar(max),不知道大家用varchar(max)有没有什么应该注意的,它除了能存的字符多外,有没有什么缺点呢?比如消耗更多的资源??望高手指教~

解决方案 »

  1.   

    --char是一种重视时间的存储方式,而varchar则是重视空间的存储方式
      

  2.   

    对应关系: varchar(max)       text*    [ 2^30 - 1 (1,073,741,823) characters ] 
    nvarchar(max)                         ntext*   [ 2^31-1 (2,147,483,647) characters/bytes ] 
    varbinary(max)                        image   [ 2^31-1 (2,147,483,647) bytes ]  
      

  3.   

    需要注意的是:VARCHAR和VARCHAR(MAX)混在一起做处理时还是会变成VARCHAR,从而可能被截断,所以需要全转成VARCHAR(MAX)See:DECLARE @v_n VARCHAR(MAX)
    DECLARE @v_m VARCHAR(MAX)SET @v_n = REPLICATE('*',100000) --这里是varchar
    SET @v_m = REPLICATE(CAST('*' AS VARCHAR(MAX)),100000)  --这样才是varchar(max)
    SELECT LEN(@v_n),LEN(@v_m)/*
    8000 100000
    */