假如在数据库中有2列CD和NAME
CD CHAR(5)  
NAME VARCHAR(10)在SQL Server中
CD中输入“我我我”时 肯定是会报错的 因为汉字占2字节
但是我在MySQL中 居然输入“我我我我我”5个我都没有事
难道MySQL的CHAR(5) 中的5不是字节码???
VARCHER也是如此不理解  请指教

解决方案 »

  1.   

    是不是我建表的时候
    设置CHARSET=utf8;了  
    好像这样设置了不管什么文字数字都是占2字节
      

  2.   

    检查是什么字符集?
    show variables like 'char%'; 
      

  3.   

    MySQL 5.1用字符单位解释在列定义中的长度规范。(MySQl的以前版本以字节解释长度)。
      

  4.   

    在UTF8下,VARCHAR(10),可以存储10个字符,1个字符3个字节,1个汉字=1个字符
      

  5.   

    utf8...  原因是找到了
    这是在建表文中发现的我在Sql Server上的Create文中没看到设置charset的语句
    有很多set 什么什么的  哪个是设置charset的
    再请教下
      

  6.   

    mysql可以给每个字段都定义字符集,定义完字段类型后直接加 chartset utf8
      

  7.   


    正解。
    http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#string-type-overview
      MySQL 5.1用字符单位解释在字符列定义中的长度规范。(以前的一些MySQL版本以字节解释长度)。show variables like 'char%';  其实并不能解释为什么,你需要的是 show create table t1; 来断定你表中实现使用的字符集。
      

  8.   

    sql server 中你可以用 COLLATE collation_name  来定义某一列的字符集设置。
      

  9.   

    有点不明白
    MySQl的以前版本以字节解释长度  
    这句话是不是以前的版本不能设定字符集?
    还是不设置字符集 默认是以字节解释长度?
    还有这个以字节解释长度是不是定义CHAR(5)的时候  这个5是字节长度
    输入3个汉字就出错 是不?详细解释下可以不
      

  10.   

    首先,你的MYSQL版本是多少?
    假设是 5.1 
    则这句话是不是以前的版本不能设定字符集? 
    不是,以前的也可以设置字符集。还是不设置字符集 默认是以字节解释长度?
    不可能不设置字符集的。每个CHAR都有它的字符集设置,只不过你如果不设置,就用默认的。(所以为什么说你用 show variables like 'char%'; 并不一定说明你表的字符集设置)还有这个以字节解释长度是不是定义CHAR(5)的时候  这个5是字节长度 
    MYSQL 5.1 五个字符长度,一个字符或者是1字节,或者是2字节,或者是3字节。输入3个汉字就出错 是不?
    MYSQL 5.1 中,看你的字符集设置,如果是utf8,自然可以容纳5个汉字。