to 不是text能比nvarchar村的多吗?听谁说的。再说那只是系统默认的,你可以自己改呀。

解决方案 »

  1.   

    这个长度是字段在记录行中所占用的最大长度
    text字段在记录行中保存的是一个16位的指针,指向数据所在的地址
      

  2.   

    简单地说,text里不存数据,所以不需要那么长
    而char、varchar、nchar、nvarchar都是直接将字符串保存在记录中
      

  3.   

    char的50表示占据了50的空间;
    nvarchar的50表示最多存放那么多字符,具体多少和输入长度有关;
    Text只能是16,是存放数据的地址,这个地址中有多少字符,也是由输入决定的,最大可以2G
      

  4.   

    char(50)最长是50个ASCII字符(单字节,定长),nchar(50)表示最长是50个uncode字符(双字节,定长),nvarchar(50)表示最长是50个uncode字符(双字节,可变长,当然在50这个范围中),text(16)是16个单字节,指向数据所在的地址.
    所谓定长,即一旦输入字符,要更改这个字符长度不行!
      

  5.   

    ……学过程序设计语言的指针吗?pascal、c/c++都有text字段就是指针(还有image也是)如果把一条记录比作一个柜子,每个字段都是一个抽屉,抽屉大小不一,那么:
    char、nchar、varchar、nvarchar都是直接把东西(数据)放在抽屉里
    而text、ntext、image并不是把东西放在抽屉里,而是再找个箱子放东西,它们所对应的抽屉放什么呢?——就放“各自的东西放在箱子里的位置”明白了么?
      

  6.   

    text是长度可变非Unicode类型,最长为2^31-1个字符,不同的输入内容保存进数据库的长度不一字 
    nvarchar 保存的是Unicode类型的字的数量,所有字符都视为同样长度的编码例如 nvarchar(20) 则可以保存任何属于unicode编码的20个字。基本上全球的文字都能保存的,做国际化网站的时候需要考虑这个类型
      

  7.   

    varchar等字段中放的是内容,text,ntext和image字段是例外,放的是引用(或者说指针地址)16位的地址可以允许读写的范围可是非常大了。另外还有一点初学者有的也误解的就是int的长度是4,有些人以为4就是4位数0-9999或是-9999到9999。其实4是4个字节范围一共是 2^(4×8),大约是40亿(正负20亿),一般情况下是很够用的了。