Mysql中文搜索不准确的原因和解决办法

来源:百度文库 编辑:神马文学网 时间:2024/04/27 19:27:58

SELECT *? FROM `user`? WHERE `first_name` = '孟'? LIMIT 0 , 30

竟然会搜出一条 李 的记录来,上网查了查,原来是大小写和中文?字符集的问题

原因:

在默认情况下,Mysql的字符集是iso的,这样出现的第一个问题是,搜索一个汉字的时候,可能搜到其他的词,原因是前一个汉字的后半个字节和后一个汉字的前半个字节拼接起来正好是你搜的那个字。第二个问题是,Mysql对大小写并不是敏感的,就是说?A和a是一样的,孟和李的前一个字节正好是被Mysql认为是大小写相同的字符,所以搜孟时,会出现李。

解决方案:

1 将mysql的字符集改为gbk

2 将要进行中文搜索的字段加上binary属性

3 使用Blob