MySQL查询时默认不区分大小写

时间:2022-01-06 00:47:02

做项目的时候发现个问题,登录的时候不管是用大写还是小写,都能查出来相同的用户。比如用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,不区分大小写