在使用MySQL查詢數據時發現,不管大小寫都能查詢到數據,也就是說其對大小寫不敏感,沒有區分大小寫。先看下面的案例:
1.演示案例
1)創建表插入數據
CREATE TABLE `user` ( `username` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO user(username, password) VALUES ('abc', '123'); INSERT INTO user(username, password) VALUES ('Abc', '456'); INSERT INTO user(username, password) VALUES ('bcd', '444');
2)查詢
select * from user where username = 'abc';
結果如下:
查詢username是"abc"的結果把"Abc"的也查詢出來了。若需要區分大小寫,需要進行配置。
2.解決辦法
2.1方法一:查詢時區分
在查詢時,在where關鍵字后面添加binary關鍵字,那么就會區分大小寫去查詢。
select * from user where binary username = 'abc';
2.2方法二:修改字段屬性區分
字段默認的規則是ut8***_ci。以 “_ci" 結尾的表示不區分大小寫,以 “_bin" 結尾的表示區分大小寫。
修改需要區分大小寫的字段的校對規則為utf8****_bin ,需要進行大小寫區分
ALTER TABLE user MODIFY COLUMN username varchar(255) BINARY CHARACTER SET utf8 COLLATE utf8_bin;
修改后查詢,便會區分大小寫
select * from user where username = 'abc';
2.3方法三:創建表時區分
在創建表時指定binary,那么可以直接查詢,,也很方便。
CREATE TABLE `user` ( `username` varchar(255) binary DEFAULT NULL, `password` varchar(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;