char和vachar如何根据情况选择才合适

解决方案 »

  1.   

    建议用varchar 或者 nvarchar
      

  2.   

    像标志位什么的用char(1) 比价好  而且这种字段索引的话效率很高 主要是占用空间小
      

  3.   

    varchar相比char,节省了一些空间,前者按实际字符串长度占用记录的空间
    但是,需要2个字节的实际长度信息;另外,处理起来也没固定长度的那么高效了如果一个表已经有一个varchar了,再多几个varchar也不会再降低效率——据说
    nchar和nvarchar是unicode,支持多语言,但是占用的空间多一倍
      

  4.   

    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: 
    如果希望列中的数据值大小接近一致,请使用 char。 
    如果希望列中的数据值大小显著不同,请使用 varchar。 
    如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar 处理。 
    当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。 
      

  5.   

    CHAR 固定,VARCHAR ,NVARCHAR 可变!!一般选择后面的吧
      

  6.   

    先顶下。一般在程序中标记量就用CHAR(1),别的一般就用VARCHAR,有的为了防止乱码,就用NVARCHAR,
      

  7.   

    在确定字符长度时用char,如果数据的内容是不定长度的,那么就用varchar或nvarchar来适应。如果内容长度比char定义时的短,那么char会用空白字符来补足缺少的字符。如果超过定义时的长度,那么就截断。举个例子就是
    declare @text char(6)
    set @text = '123'
    print @text
    --123  "123后面有3个空格"
    declare @text char(6)
    set @text = '1234567'
    print @text
    --123456 "只是输出了前6个字符,第7个被丢掉。"
    而在用varchar或nvarchar时,结果只是第一种情况时有所不同:
    declare @text varchar(6)
    set @text = '123'
    print @text
    --123  "123后面没有其他字符了"
    declare @text varchar(6)
    set @text = '1234567'
    print @text
    --123456 "只是输出了前6个字符,第7个被丢掉。"