转!!mysql 查询条件不区分大小写问题
做用户登录模块时,输入用户名(大/小写)和密码 ,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 查询条件不区分大小写问题的更多相关文章
- mysql 查询条件不区分大小写问题
		
转自 http://blog.csdn.net/qishuo_java/article/details/40118937 转自 https://www.cnblogs.com/wuyun-blog/p ...
 - mysql 查询条件 默认不区分大小写
		
mysql查询默认是不区分大小写的 如: 1 2 select * from some_table where str=‘abc'; select * from some_table where st ...
 - mysql查询时强制区分大小写
		
转载自:http://snowolf.iteye.com/blog/1681944 平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写.但作为用户信息,一旦用户名 ...
 - mysql 查询条件中文问题
		
这是mysql字符编码的问题,因为mysql默认的字符编码为latin1它并不识别中文,所以在读取查询语句时会出现乱码 从而使查询条件不正确所以我们只需要更改它的字符编码就可以一般都是用utf8 这里 ...
 - mysql 查询语句严格区分大小写
		
一般情况下mysql 查询是不会区分大小写的,执行查询语句select id,current_unit from knowledge_attributes where current_unit = ...
 - 字符串变量作mysql查询条件
		
原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...
 - mysql查询时不区分大小写
		
一次偶然的机会,发现在登陆验证时,改变用户名的大小写,同样可以登录成功,这是由于,当时使用的mysql数据库对大小写不敏感,查询时总是能查询到数据.一番查找资料,给出的原因是:在创建数据库的时候,选择 ...
 - Mysql 查询条件中字符串尾部有空格也能匹配上的问题
		
一.表结构 TABLE person id name 1 你 2 你(一个空格) 3 你(二个空格) 二.查询与结果 select * from person where `name` = ? 无论 ...
 - 字符串型MySQL查询条件需要注意的一点
		
最近在工作中遇到了数据库服务器产生很多读写队列的问题,于是要求大家开始优化我们的SQL语句. 下面是查询quotedata_history表中的code字段的SQL语句,其中code字段的类型是var ...
 
随机推荐
- AAtitit.随时间变色特效 ---包厢管理系统的规划titit.随
			
Atitit.随时间变色特效 ---包厢管理系统的规划 1 流程滴定仪 定义的参数 颜色.位置(开始值,结束值,当前比值) >>返回数值 可以后期处理转成双位16进制码 分别定义复合颜色的 ...
 - JQ集合
			
获取所有id以a开头的div$("div[id^='a']") $('div').last() $('#item1') <div id='select'>点击这里< ...
 - MyEclipse中背景颜色的设定
			
设置代码编写区域背景色的方法: Window-->Preferences-->General-->Editors-->TextEditors-->在Appearance ...
 - 如何使用Photoshop(PS)将图片的底色变为透明
			
很多时候需要将一张图片的底色变得透明.本文描述了使用PS将图片的一部分变得透明的方法.本例将一段艺术字的背景去掉,将背景透明的文字单独保存成图片,这样以后将这段文字粘贴到其他素材上的时候,就不用担心它 ...
 - 让超出DIV宽度范围的文字自动显示省略号...
			
关键是:text-overflow: ellipsis; div.titleholder { font-family: ms sans serif, arial; font-size: 8pt; wi ...
 - HBase学习笔记——概念及原理
			
1.什么是HBase HBase – Hadoop Database,是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群. ...
 - vs2003  不断提示 已过期 问题
			
工作时曾遇到使用 vs2003 生成后,点击"调试“或者"执行“后不断提示 类似“已过期,是否要重新生成”这样的问题. 当时的情况是 :我要实现的功能和"时间" ...
 - zend  Studio10.6.2汉化
			
选择Help菜单 -> Install New Software... 在Work with框中复制此地址: http://archive.eclipse.org/technology/babe ...
 - nginx 403 forbidden 二种原因
			
nginx 403 forbidden 二种原因 引起nginx 403 forbidden有二种原因,一是缺少索引文件,二权限问题.今天又遇到 了,顺便总结一下. 1,缺少index.html或者i ...
 - TaskTracker学习笔记
			
转自:http://blog.csdn.net/androidlushangderen/article/details/41477061 上次分析完JobTracker通过TaskScheduler如 ...