char、Varchar、nvarchar、ntext (转)

带n的类型是Unicode数据,使用Unicode数据类型,列可存储由Unicode标准定义的任何字符,包含由不同字符集定义的所有字符。Unicode数据类型需要相当于非Unicode数据类型两倍的存储空间,之所以varchar的最大长度是8000,而nvarchar的最大长度只有4000。
nvarchar(n)包含n个字符可变长度Unicode字符数据。n的值必须介于1与4000之间。字节的存储大小是所输入字符个数的两倍。   
    varchar[(n)]长度为n个字节的可变长度且非Unicode的字符数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度。
    text和varchar的工作原理是一样的。text相当于varchar的升级版。每一个varchar要浪费一个字节在长度管理上。text浪费2个字节。尽可能的使用浪费少的。
    ntext可变长度Unicode数据,最大长度为(1,073,741,823)个字符,存储大小是所输入字符个数的两倍(以字节为单位)。
Char   varchar区别:  
  Char固定大小,如果录入字符串长度不够,则用空格补全。  
  而varchar类型把它(定义时规定上限)视为最大值并且只使用了存储字符串实际上需要的字节数(增加一个额外的字节记录长度)。因而较短值被插入道varchar中不会用空格填补,但在较长时仍被截断。对于TEXT和BLOB类型来说区别也是一样的,TEXT不区分大小写,而BLOB区分。TEXT相对于varchar能接收的字符串更长,也就是说多于varchar的255个字符  
 
    Varchar 对每个英文(ASCII)字符都占用2个字节,对一个汉字也只占用两个字节char 对英文(ASCII)字符占用1个字节,对一个汉字占用2个字节。
    Varchar 的类型不以空格填满,比如varchar(100),但它的值只是"qian",则它的值就是"qian"而char 不一样,比如char(100),它的值是"qian",而实际上它在数据库中是"qian "(qian后共有96个空格,就是把它填满为100个字节)。
    由于char是以固定长度的,所以它的速度会比varchar快得多!但程序处理起来要麻烦一点,要用trim之类的函数把两边的空格去掉!
    char和varchar:固定长度(char)或可变长度(varchar)字符数据类型
    nvarchar(n):包含n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar在SQL-92中的同义词为national char varying和national character varying
http://blog.sina.com.cn/s/blog_60d268d90100nv37.html
posted @ 2013-04-17 15:05  mrcoolye  阅读(530)  评论(0编辑  收藏  举报