mysql搜索大小写区分

mysql搜索大小写区分

    • 需求说明
    • 问题查找
    • 问题解决

需求说明

最近功能上线,模糊搜索后,客户反馈不能进行大小写的模糊搜索,例如:输入abcd,只能返回包含adcd的内容,不能搜到ABCD的内容,需要修改。

问题查找

根据网络上一系列的搜索,mysql默认是不区分大小写的,而java是区分大小写的,那么为何我的默认区分大小写了呢。
打开navicat,搜索输入:select * from t_user where user_name like "lihao%"
返回结果只有lihao,没有LIhao等内容。
这说明我的mysql是区分了大小写,导致后台搜索时,也就区分了大小写。

问题解决

查看表属性,发现user_name的字符集为utf_8,排序规则为utf8_bin。
根据mysql的说明:
utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。
utf8_genera_ci不区分大小写,ci是case insensitive的缩写,即一般大小写不敏感。

所以根据业务需求,将字符排序规则改为utf8_genera_ci,再次搜索,问题解决。

你可能感兴趣的:(java基础,mysql,mybatis)