select * from result where titlename like "%语文%";
1.这个查询结果中titlename中还是会出现 与‘语文’不相关的标题,为什么会这样?有人说用:
select * from result where titlename like binary "%语文%";
2.为什么要用 select * from result where titlename like binary "%语文%";
3.select * from result where binary titlename like "%语文%"; //这个为什么不行了???谢谢高手回答,我总分不清
1.这个查询结果中titlename中还是会出现 与‘语文’不相关的标题,为什么会这样?有人说用:
select * from result where titlename like binary "%语文%";
2.为什么要用 select * from result where titlename like binary "%语文%";
3.select * from result where binary titlename like "%语文%"; //这个为什么不行了???谢谢高手回答,我总分不清
MySQL 中文显示乱码
show variables like 'char%';
-------------------------+---------------------------------
character_set_client | latin1
character_set_connection | latin1
character_set_database | latin1
character_set_filesystem | binary
character_set_results | latin1
character_set_server | latin1
character_set_system | utf8
character_sets_dir | /usr/local/share/mysql/charsets/
select * from result where titlename like binary "%语文%"; 这样写,like binary
show variables like 'char%';
都是以latin1这种编码的
character_set_client | latin1
然后表中也是 DEFAULT CHARSET=latin1 所以存储汉字没有问题。但问题在于latin1 默认校对集是 latin1_swedish_ci, 所以你只能以二进制的方式进行比较,不能直接胜利MYSQL的校对集进行比较。解决方法
1. 使用binary 修饰符,强制转为二进制比较
2. 设置系统校对集为 latin1_bin
3. 既然是中文,建议使用支持中文的字符集 UTF8, GB2312, GBK 等,需要先导出数据,然后以新字符集重建数据库后,再导入数据。