server2005/2008 char,nchar,varchar,nvarchar这四个有什么区别

解决方案 »

  1.   

    实例分析varchar和nvarchar的区别--【叶子】
      

  2.   


    nchar(n)   
    包含n个字符的固定长度Unicode字符数据。n的值必须介于1与4,000之间。
    存储大小为n字节的两倍。nchar在SQL-92中的同义词为national char和national character。   
    nvarchar(n)   
    包含n个字符的可变长度Unicode字符数据。n的值必须介于1与4,000之间。
    字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
    nvarchar 在SQL-92中的同义词为 national char varying和national  character varying。   注释   
    如果没有在数据定义或变量声明语句中指定n,则默认长度为1。
    如果没有使用CAST函数指定n,则默认长度为30。   如果希望列中所有数据项的大小接近一致,则使用nchar。   
    如果希望列中数据项的大小差异很大,则使用nvarchar。   使用nchar或nvarchar的对象被赋予数据库的默认排序规则,除非使用COLLATE子句赋予特定的排序规则。   
    SET ANSI_PADDING OFF不适用于nchar或nvarchar。
    SET ANSI_PADDING ON 永远适用于nchar和nvarchar。   二、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。   注释   
    如果没有在数据定义或变量声明语句中指定n,则默认长度为1。
    如果没有使用CAST函数指定n,则默认长度为30。   将为使用char或varchar的对象被指派数据库的默认排序规则,
    除非用COLLATE子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。   支持多语言的站点应考虑使用Unicode nchar或nvarchar数据类型以尽量减少字符转换问题。
     
    如果希望列中的数据值大小接近一致,请使用char。   
    如果希望列中的数据值大小显著不同,请使用varchar。     如果执行CREATE TABLE 或ALTER TABLE 时SET ANSI_PADDING 为 OFF,
    则一个定义为NULL的char 列将被作为varchar处理。     当排序规则代码页使用双字节字符时,存储大小仍然为n个字节。
    根据字符串的不同,n个字节的存储大小可能小于n个字符。   总结:
    1、 varchar:   
    可变长度的非Unicode数据,最长为8,000个字符。   
    2、nvarchar:   
    可变长度Unicode数据,其最大长度为4,000字符。   
    3、char: 
    固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。 
    4、nchar 
    固定长度的 Unicode 数据,最大长度为 4,000 个字符。 
    5、char和varchar都是字符串类型的
    用Unicode编码的字符串,结果是字符的整数值
      

  3.   

    char是可变长度非Unicode 的字符集,
    varchar是可变长度非Unicode 的字符集,两者最大只能8000个字符,
    而nchar是固定长度标准Unicode字符集,
    nvarchar是可变长度标准Unicode 的字符集,两者最大只能4000个字符