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 "%语文%"; //这个为什么不行了???谢谢高手回答,我总分不清
解决方案 »
- vc++ ado操作mysql , 中文存储成功,但是修改失败
- 关于FTP命令行下传完文件后打开有问题的问题..
- 求助,mysqldump问题
- mysql 3.23 字查询不支持问题
- .net中,针对于MSSQL的SQLHelp.cs和针对于MYSQL的SQLHelp.cs是不是不一样啊?
- mysql中,如何设计表使之可以容纳上亿条数据?
- 执行 perl mysql-test-run.pl 时产生错误 . ( 不论问题是否解决, 三日一定结贴, 帮顶有分)
- 请教mysql中带多条件的快速检索方法
- my sql连接速度问题
- MySQL创建连接时无响应,也不报错,求大神帮忙
- 请教Mysql的时间列查询“最大的一些”语句
- 新手问题 请问MYSQL的数据库文件是存在哪个目录下面的
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 等,需要先导出数据,然后以新字符集重建数据库后,再导入数据。