码迷,mamicode.com
首页 > 数据库 > 详细

MySQL区分大小写

时间:2021-05-24 13:36:41      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:div   into   char   mod   lazy   区分大小写   value   table   set   

在使用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;

 

MySQL区分大小写

标签:div   into   char   mod   lazy   区分大小写   value   table   set   

原文地址:https://www.cnblogs.com/zys2019/p/14775928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!