MySQL中文查询时的字符集匹配问题的解决
2012-11-04 16:19
204 查看
MySQL中文查询时的字符集匹配问题的解决
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-09/7344.htm
写一个字段中包含“李”字的所有记录?$str="李";
select * from table where field like '%?$str%' ;
显示的记录中除了包含”李”字的记录,还有不包含“李”字的记录。为什么?
在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很多版本中都存在。如果这个问题不解决,那么MySQL将无法实际处理中文。
出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象。
方法一:
解决方法是对于包含中文的字段加上"binary"属性,使之作为二进制比较,例如将"name char(10)"改成"name char(10)binary"。
方法二:
如果你使用源码编译MySQL,可以编译MySQL时使用--with--charset=gbk 参数,这样MySQL就会直接支持中文查找和排序了。
方法三:
可以使用 Mysql 的 locate 函数来判断。以上述问题为例,使用方法为:
SELECT * FROM table WHERE locate(field,'李') > 0;
本站使用的就是这种方法,感觉还不错。
方法四:
把您的Select语句改成这样,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%'即可。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2007-09/7344.htm
相关文章推荐
- MySQL中文查询时的字符集匹配问题
- 关于mysql查询字符集不匹配问题的解决方法
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题以及error 1406:data too long for column 'name' at row 1
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- MySQL字符集 GBK、GB2312、UTF8区别解决 MYSQL中文乱码问题
- 不修改SQL_Latin1_General_CP1_CI_AS 字符集 解决中文条件查询问题
- 【转贴】Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
- mysql查询中文问题解决方法
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- 解决使用cmd或powershell进行数据库(MySQL,SQLite3...)查询时中文乱码的问题
- MySql解决不区分大小写和中文模糊查询问题
- Linux下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- mysql_query设置字符集为utf8,解决中文乱码的问题
- 解决hibernate向mysql插入中文乱码问题(更改MySQL字符集)
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题
- 解决mysql 查询字符集不匹配的问题