您当前的位置: 首页 >  ar

java持续实践

暂无认证

  • 4浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

mysql查询char/varchar区分大小写

java持续实践 发布时间:2019-03-08 20:41:45 ,浏览量:4

由于在实际项目中 , 登录模块使用的shiro进行登录认证, 首先会根据用户名进行查询. 但是实际出现的bug是,无论用户名是大写还是小写都能登录成功, 最后查找到的原因是mysql在查询时, 没有进行大小写的区分.

解决方法:

  1. 查询时指定大小写敏感 即使用collate utf8_bin 指定大小写, 如下
select id, account, name, birthday,password, sex, email, avatar,
		phone, roleid,salt,
		deptid, status,
		createtime, version
		from sys_user where account = "admin" collate utf8_bin and status != 3

  1. 建表时指定大小敏感 例如在建表语句的后面加上指定大小写, COLLATE utf8_bin
-- 大小写敏感
CREATE TABLE `test1` (
  `str` char(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 大小写不敏感
CREATE TABLE `test2` (
  `str` char(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.1278s