今天遇到一个 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对中文支持的不好
最好的解决方法是更改数据库字符集,如果实在没有办法只能按以上方法解决