假如在数据库中有2列CD和NAME
CD CHAR(5)
NAME VARCHAR(10)在SQL Server中
CD中输入“我我我”时 肯定是会报错的 因为汉字占2字节
但是我在MySQL中 居然输入“我我我我我”5个我都没有事
难道MySQL的CHAR(5) 中的5不是字节码???
VARCHER也是如此不理解 请指教
CD CHAR(5)
NAME VARCHAR(10)在SQL Server中
CD中输入“我我我”时 肯定是会报错的 因为汉字占2字节
但是我在MySQL中 居然输入“我我我我我”5个我都没有事
难道MySQL的CHAR(5) 中的5不是字节码???
VARCHER也是如此不理解 请指教
设置CHARSET=utf8;了
好像这样设置了不管什么文字数字都是占2字节
show variables like 'char%';
这是在建表文中发现的我在Sql Server上的Create文中没看到设置charset的语句
有很多set 什么什么的 哪个是设置charset的
再请教下
正解。
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; 来断定你表中实现使用的字符集。
MySQl的以前版本以字节解释长度
这句话是不是以前的版本不能设定字符集?
还是不设置字符集 默认是以字节解释长度?
还有这个以字节解释长度是不是定义CHAR(5)的时候 这个5是字节长度
输入3个汉字就出错 是不?详细解释下可以不
假设是 5.1
则这句话是不是以前的版本不能设定字符集?
不是,以前的也可以设置字符集。还是不设置字符集 默认是以字节解释长度?
不可能不设置字符集的。每个CHAR都有它的字符集设置,只不过你如果不设置,就用默认的。(所以为什么说你用 show variables like 'char%'; 并不一定说明你表的字符集设置)还有这个以字节解释长度是不是定义CHAR(5)的时候 这个5是字节长度
MYSQL 5.1 五个字符长度,一个字符或者是1字节,或者是2字节,或者是3字节。输入3个汉字就出错 是不?
MYSQL 5.1 中,看你的字符集设置,如果是utf8,自然可以容纳5个汉字。