示例:
有一个表结构如下:create table a(name char(2));
有如下的SQL语句:
insert into a values('sa');
insert into a values('哦a');
insert into a values('哦哦');
都可以正常插入!而:
insert into a values('saa');
insert into a values('哦哦a');
insert into a values('哦aa');
都不可以正常插入!疑问:char(2) 表示占去2个字节的空间。而一个汉字就 = 2个字节
为什么可以插入像 insert into a values('哦哦'); 的呢?不是占了四个字节了吗?
有一个表结构如下:create table a(name char(2));
有如下的SQL语句:
insert into a values('sa');
insert into a values('哦a');
insert into a values('哦哦');
都可以正常插入!而:
insert into a values('saa');
insert into a values('哦哦a');
insert into a values('哦aa');
都不可以正常插入!疑问:char(2) 表示占去2个字节的空间。而一个汉字就 = 2个字节
为什么可以插入像 insert into a values('哦哦'); 的呢?不是占了四个字节了吗?
char(2) 是两个字符!不是两个字节。而一个汉字就 = 2个字节
一个汉字是一个字符,一个英文字母也是一个字符,但一个汉字未必是两个字节,要根据字符集而定。关于字符集可以参考下贴中相关部分。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码