今天遇到一个 latin1编码查询不准的问题,比如输入“辽宁”,会将带有“宁夏”,“宁波”的一起搜索出来。补救方法:
使用MySQL 本身特性解决的方法是使用latin1_bin 校对字符集,如message2,但如果你的数据
已经是其它latin 校对字符集,使用下面的方法补救:
种方法没有使用任何索引。
可以使用EXPLAIN 语法检查以下三句的区别:
mysql4.0不支持其他字符集,安装时不可选,默认安装为latin1
从mysql4.1版本开始,安装时可以选择数据库默认字符集,如:utf-8
这个问题是历史遗留问题,mysql4.0对中文支持的不好
最好的解决方法是更改数据库字符集,如果实在没有办法只能按以上方法解决
使用MySQL 本身特性解决的方法是使用latin1_bin 校对字符集,如message2,但如果你的数据
已经是其它latin 校对字符集,使用下面的方法补救:
SELECT * FROM article WHERE title like '%辽宁%' collate latin1_bin;
SELECT * FROM article WHERE BINARY title like '%辽宁%';从MySQL 手册中说,这两种方式是一样的,而实质上,上面一种方法会利用到索引,下面一种方法没有使用任何索引。
可以使用EXPLAIN 语法检查以下三句的区别:
explain SELECT * FROM article WHERE title like '%辽宁%' collate latin1_bin;
explain SELECT * FROM article WHERE BINARY title like '%辽宁%';
explain SELECT * FROM article WHERE title like '%辽宁%'; mysql4.0不支持其他字符集,安装时不可选,默认安装为latin1
从mysql4.1版本开始,安装时可以选择数据库默认字符集,如:utf-8
这个问题是历史遗留问题,mysql4.0对中文支持的不好
最好的解决方法是更改数据库字符集,如果实在没有办法只能按以上方法解决
本文介绍了解决MySQL中拉丁编码(latin1)导致搜索不准确的问题,通过使用latin1_bin校对集或BINARY关键字来提高搜索准确性,并讨论了不同方法对索引的影响。
5万+

被折叠的 条评论
为什么被折叠?



