mysql不区分大小写解决

时间:2023-02-07 16:06:27

今天遇到一个情况,前台验证用户昵称的时候发现无论输入Fred fred亦或是FrEd 都会显示昵称存在(这并不是我所期望的结果)

debug发现并不是程序问题 hibernate也只是吧hql装成mysql 最后发现是mysql本身的问题(不区分大小写)该字段类型围utf-8

通过查询资料发现需要设置collate(校对) 。 collate规则:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写


解决方法

1.可以将查询条件用binary()括起来。 比如: select * from TableA where columnA like binary('aaa');

  1. 可以修改该字段的collation 为 binary 字符集还是utf-8 改了排序规则为utf-8-bin(使用的navicate for mysql工具)

如:

ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;