做项目的时候发现个问题,登录的时候不管是用大写还是小写,都能查出来相同的用户。比如用m1登录和用M2登录,都可以查出来m1用户(表里面存的是m1)。看了看代码没什么问题,在数据库里面运行了一下sql,发现MySQL默认查询竟然是不区分大小写的。
查了查资料,有如下两种解决方法:
1.可以将查询条件用binary()括起来。 比如: select * from TableA where columnA like binary('aaa');
2. 可以修改该字段的collation 为 binary
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
附:
*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的
*_cs: case sensitive collation,区分大小写
*_ci: case insensitive collation,不区分大小写