默认mysql where判断是不区分大小写的,平时好像也没有遇见过这个问题,但是这里还是给出简单的解决方案吧。
参考:https://blog.csdn.net/Veir_123/article/details/73730751
下面两句话效果是一样的。
select * from user where username = 'admin' and password = 'admin';
select * from user where username = 'Admin' and password = 'admin';
解决:
方案一:
修改字符检索策略:utf8_general_ci,表示不区分大小写,utf8_bin表示二进制比较,区分大小写 。
-- 创建表:
CREATE TABLE testt(
id INT PRIMARY KEY,
name VARCHAR(32) NOT NULL
) ENGINE = INNODB COLLATE =utf8_bin;
-- 修改表结构的Collation属性
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
方案二:
直接修改sql语句
-- 在每一个条件前加上binary关键字
select * from user where binary username = 'admin' and binary password = 'admin';
-- 将参数以binary('')包围
select * from user where username like binary('admin') and password like binary('admin');