做用户登录模块时,输入用户名(大/小写)和密码 ,mysql都能查出来。-- mysql查询不区分大小写。

转自 http://blog.csdn.net/qishuo_java/article/details/40118937

找出用户名id为’AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h‘的用户的数据: select * from usertable where id = 'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'; 结果出现两条记录。这就奇怪了,id已经设置为主键,怎么会重复呢?难道是mysql的漏洞。后来发现原来查询出来的两个id的值是不同的,诈一看没什么区别,仔细看你会发现这两个id只是有一个字母的大小写不同, 这两个id分别为:

'AAMkADExM2M5NjQ2LWUzYzctNdFkMC1h',

'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'.

原来mysql查询时,存在不区分大小写的情况。可以通过binary关键字加以解决。

解决方法有两种:

第一种:让mysql查询时区分大小写

select * from usertable where binary id = 'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h';

第二种:在建表时加以标识

create table table_name {

id varchar(32) binary;

}

在mysql中,存在大小写问题的地方还有:

(1)  关键字: 不区分大小写    select * fRom table_name 和 select * from table_name 效果是一样的

(2) 标示符(如数据库名称和表名称):不区分大小写。如存在表users,那么select  *  from users和select *  from uSers 效果一样。网上说这跟操作系统有关,在所有Unit操作系统(除了使用HFS+的Mac OS 之外)上都是区分大小写的,而在windows上是不区分大小写的。(网上的这一说法没有验证过,我在windows server2003上是不区分大小写的)
(3) 表的别名:不区分大小写  select m.* from users m where M.username = 'aa';
(4) 列的别名:不区分大小写  select uName from (select username as uname from users where id = 768) t

转!!mysql 查询条件不区分大小写问题的更多相关文章

  1. mysql 查询条件不区分大小写问题

    转自 http://blog.csdn.net/qishuo_java/article/details/40118937 转自 https://www.cnblogs.com/wuyun-blog/p ...

  2. mysql 查询条件 默认不区分大小写

    mysql查询默认是不区分大小写的 如: 1 2 select * from some_table where str=‘abc'; select * from some_table where st ...

  3. mysql查询时强制区分大小写

    转载自:http://snowolf.iteye.com/blog/1681944 平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写.但作为用户信息,一旦用户名 ...

  4. mysql 查询条件中文问题

    这是mysql字符编码的问题,因为mysql默认的字符编码为latin1它并不识别中文,所以在读取查询语句时会出现乱码 从而使查询条件不正确所以我们只需要更改它的字符编码就可以一般都是用utf8 这里 ...

  5. mysql 查询语句严格区分大小写

    一般情况下mysql 查询是不会区分大小写的,执行查询语句select id,current_unit from knowledge_attributes where  current_unit = ...

  6. 字符串变量作mysql查询条件

    原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...

  7. mysql查询时不区分大小写

    一次偶然的机会,发现在登陆验证时,改变用户名的大小写,同样可以登录成功,这是由于,当时使用的mysql数据库对大小写不敏感,查询时总是能查询到数据.一番查找资料,给出的原因是:在创建数据库的时候,选择 ...

  8. Mysql 查询条件中字符串尾部有空格也能匹配上的问题

    一.表结构 TABLE person id name 1 你 2 你(一个空格) 3 你(二个空格) 二.查询与结果 select * from person where `name` = ? 无论 ...

  9. 字符串型MySQL查询条件需要注意的一点

    最近在工作中遇到了数据库服务器产生很多读写队列的问题,于是要求大家开始优化我们的SQL语句. 下面是查询quotedata_history表中的code字段的SQL语句,其中code字段的类型是var ...

随机推荐

  1. 多线程-Thread,Runnable,Callable,Future,RunnableFuture,FutureTask

    类图: 先看各自的源码: public interface Runnable { public abstract void run(); } public class Thread implement ...

  2. PMON

    PMON是一个兼有BIOS和boot loader部分功能的开放源码软件,多用于嵌入式系统. 与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多.基于龙芯的系统采用 pmon ...

  3. 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体解释

    转载请注明来源: http://blog.csdn.net/kjunchen/article/details/50909410 使用BleLib的轻松搞定Android低功耗蓝牙Ble 4.0开发具体 ...

  4. css 的通用样式 设置 和倒计时功能 移动轮播图的手势滑动的功能

    body{ line-height:1.4; color:#333; font-family:arial; font-size: 12px; background:white; } input,tex ...

  5. js----Navigator对象,查看浏览器信息,Screen对象,查看屏幕信息

    Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...

  6. iOS swift 关于自定义表情键盘

    目录 输入框 键盘监听 键盘切换 表情装载 表情加载 表情输入 表情输出 表情显示 结束语 demo下载 demo图片: 输入框 为了让输入框能够随着用户输入内容变化自动变化高度,这里的输入框使用UI ...

  7. linux上FTP服务器搭建

    一.启动vsftpd服务 1. 启动VSFTP服务器 A. cenos下运行:yum install vsftpd B. 登录Linux主机后,运行命令:"service vsftpd st ...

  8. [转]用了docker是否还有必要使用openstack?

    从一项颠覆性的技术成果转化并衍生出一整套社区体系,Docker在发展速度上打破了一个又一个历史纪录.然而,Docker项目在采纳与普及方面表现出惊人态势的同时,也给我们带来了一系列疑问与困惑. 在今天 ...

  9. SpringBoot 获取前端页面参数的集中方式总结

    SpringBoot的一个好处就是通过注解可以轻松获取前端页面的参数,之后尅将参数经过一系列处理传送到后台数据库,前端时间正好用到.大致分为一下几种: 1.指定前端URL请求参数名称与方法名称一致,这 ...

  10. 字符串的数字部分递增,如user00000001后面的数字部分递增+1

    使用存储过程方式 bengin declare@namevarchar(50) set@name=(selectmax(right('user00000001',8<8是从后往前数,从1开始&g ...