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查询登入的用户名和当前系统时间是这样写吗?Select user,getdate()
- 请教mysql5.5在Windows2003下使用udf功能提示找不到动态库?
- 从php里执行的mysql语句无法插入数据表 但auto increment数值却在增加 请问是什么问题?
- 查询语句的筛选条件,是从右向左判断的么
- 问个基础问题,sql文件是不是数据库
- mysql里面有符号整数类型问题,请指点,谢谢
- 谁能告诉我如何成功删除一个MySQL数据库
- 有关mysql的一个奇怪问题
- mysql源碼方面的資料。
- 求一条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 等,需要先导出数据,然后以新字符集重建数据库后,再导入数据。