做用户登录模块时,输入用户名(大/小写)和密码 ,mysql都能查出来.-- mysql查询不区分大小写. 转自 http://blog.csdn.net/qishuo_java/article/details/40118937 找出用户名id为’AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h‘的用户的数据: select * from usertable where id = 'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'; 结果出现两条记录.这就奇怪了…
转自 http://blog.csdn.net/qishuo_java/article/details/40118937 转自 https://www.cnblogs.com/wuyun-blog/p/8527492.html 找出用户名id为’AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h‘的用户的数据: select * from usertable where id = 'AAMkADExM2M5NjQ2LWUzYzctNDFkMC1h'; 结果出现两条记录.这就奇怪了,…
mysql查询默认是不区分大小写的 如: 1 2 select * from some_table where str=‘abc'; select * from some_table where str='ABC'; 得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做: 第一种方法:要让mysql查询区分大小写,可以: 1 2 select * from some_table where binary str='abc' select * from some_table where…
转载自:http://snowolf.iteye.com/blog/1681944 平时很少会考虑数据存储需要明确字符串类型字段的大小写,MySQL默认的查询也不区分大小写.但作为用户信息,一旦用户名重复,又会浪费很多资源.再者,李逵.李鬼的多起来,侦辨起来很困难.要做到这一点,要么在建表时,明确大小写敏感(字段明确大小写敏感).如果通盘数据库所有字段都需要大小写敏感,不如在字符集设置时做好调整.不过,通常不建议这么做. 如果跟我一样,数据库已经在线上跑了,一个表上百万条数据,做字段类型变更有可…
这是mysql字符编码的问题,因为mysql默认的字符编码为latin1它并不识别中文,所以在读取查询语句时会出现乱码 从而使查询条件不正确所以我们只需要更改它的字符编码就可以一般都是用utf8 这里更改mysql配置文件 使其默认的字符编码为utf8 /mysql/my.ini中找到[client]添加 default-character-set=utf8找到[mysql] 添加 default-character-set=utf8 还有一种方式 .net 链接字符串内加 charset=ut…
一般情况下mysql 查询是不会区分大小写的,执行查询语句select id,current_unit from knowledge_attributes where  current_unit = 'Ghz';得到结果如下图 这是,由于我们的数据中cuurent_unit 字段有"Ghz"这种值的脏数据,需要准确找出与之关联的相关数据并做修改,所以需要严格区分大小写. 问了下度娘,找了个简单的办法.即再要查询的字段前加BINARY即可. 执行语句SELECT id,current_u…
原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,0002BL”,也可能是“0001ME”,那么如何根据条件得到想要的结果呢,我来告诉你instr方法的厉害之处. 1.开始的时候一直在将字符串str转换为in函数的参数,如下 SELECT * FROM stocks_orderlist s where s.scode in ("0001ME",…
一次偶然的机会,发现在登陆验证时,改变用户名的大小写,同样可以登录成功,这是由于,当时使用的mysql数据库对大小写不敏感,查询时总是能查询到数据.一番查找资料,给出的原因是:在创建数据库的时候,选择了utf8_general_ci排序规则. 创建数据库时,需要同时选择字符集和排序规则,字符集大家都知道是怎么回事,那排序规则干嘛用的呢? 排序规则:是指对指定字符集下不同字符的比较规则.其特征有以下几点: 1. 两个不同的字符集不能有相同的排序规则 2. 两个字符集有一个默认的排序规则 3. 有一…
一.表结构 TABLE person id name 1 你 2 你(一个空格) 3 你(二个空格) 二.查询与结果 select * from person where `name` = ? 无论 ? = "你 + 几个空格",都会检索出全部三个结果. 三.原因 MySQL 校对规则属于 PADSPACE,会忽略尾部空格 针对的是 varchar char text -- 等文本类的数据类型 此为 SQL 标准化行为.无需要设置也无法改变. 四.想要精确查询怎么办? 方法一:like…
最近在工作中遇到了数据库服务器产生很多读写队列的问题,于是要求大家开始优化我们的SQL语句. 下面是查询quotedata_history表中的code字段的SQL语句,其中code字段的类型是varchar(6). 以上查询语句是: SELECT * FROM quotedata_history WHERE `code` = 600000 大家可以看到这个语句的code条件600000是没有加引号的,通过Navicate的截图大家可以看到这次查询花了14.169秒. 以上查询语句是: SELE…
1简单查询   select* from 表名 select name as“姓名”fromstu     (把name改为名字) 2条件查询 where 后面跟条件  条件要写清楚 3模糊查询  like  no like    %代表任意多个字符   _代表一个字符 4排序查询  order by 字段 排序值 (desc降 asc升) 5范围查询     between....and... 6离散查询  in  notin 7聚合查询   sun 求和   count数据条数   max最…
mark MYSQL的binary解决mysql数据大小写敏感问题的方法…
一.问题一:MySql默认主键不区分大小写 实例: -- 创建混合类型 create table PlainText( Content nvarchar(50) , primary key(Content) ); insert into PlainText values('a'); insert into PlainText values('A'); 抛出异常:Duplicate entry 'a' for key 'PRIMARY',主键不能重复 解决方法1:创建表时字段指定binary 解决…
说明:在MySQL查询时要区分大小写会涉及到两个概念character set和collation,这两个概念在表设计时或者在查询时都可以指定的,详细参考:http://www.cnblogs.com/EasonJim/p/8128196.html MySQL查询默认是不区分大小写的 如: select * from some_table where str=‘abc'; select * from some_table where str='ABC'; 得到的结果是一样的,如果我们需要进行区分…
通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,不区分大小写 解决方法. 1.可以将查询条件用binary()括起来.  比如: ? 1 select * from TableA where binary columnA =…
mysql查询区分大小写: SELECT id,developer FROM products WHERE developer != '' and developer = binary('LYNN') 在查找的条件值加上的binary() 来源:http://my.oschina.net/xiangtao/blog/33983 mysql自定义排序: ,,,,); select * from user order by field(roleId,'张三','李四','王五'); $str = "…
在mysql中查询不区分大小写重复的数据,往往会用到子查询,并在子查询中使用upper函数来将条件转化为大写.如: select * from staticcatalogue WHERE UPPER(Source) IN (SELECT UPPER(Source) FROM staticcatalogue GROUP BY UPPER(Source) having count(UPPER(Source))>1) ORDER BY upper(Source) DESC; 这条语句的执行效率是非常低…
当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_…
摘自:http://www.jb51.net/article/70884.htm 当我们输入不管大小写都能查询到数据,例如:输入 aaa 或者aaA ,AAA都能查询同样的结果,说明查询条件对大小写不敏感. 解决方案一: 于是怀疑Mysql的问题.做个实验:直接使用客户端用sql查询数据库. 发现的确是大小不敏感 . 通过查询资料发现需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写…
mysql用outer join时 on 后边只是关联条件,有时可能会查出无用的记录, 需用where查询条件过滤 五欧诺个的数据. 记录一下…
需要设置collate(校对) . collate规则: *_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的 *_cs: case sensitive collation,区分大小写 *_ci: case insensitive collation,不区分大小写 如果表已经设置为不区分大小写,采用如下方式: 可以将查询条件用binary()括起来.  如: select  *  from table  where  field = bin…
最近项目开发一直在不断切换数据库,有时候一条sql 要同时考虑多种数据库中的兼容问题 , 先总结一条模糊查询拼接查询条件的问题,后续追加总结. 目前使用   mybatis: 1. Oracle 中使用     "||"和 "+"   来进行拼接参数条件,如 : select * from user where name like  '||'  +  #{name}  +  '||'  2. SQL Server 中使用     "%"和 &qu…
看到有资料说,where条件的顺序会影响查询的效率,根据的逻辑是: where条件的运行是从右到左的,将选择性强的条件放到最右边,可以先过滤掉大部分的数据(而选择性不强的条件过滤后的结果集仍然很大),在根据其它条件过滤时,需要比较的数据量就少,提高查询的效率. 当我看到这个逻辑时,自我认为不是太合理,数据库引擎在执行SQL语句时,都是要经过查询优化器的,查询优化器会将SQL进行优化,选择最优的查询计划来执行,查询优化器应该会选择最优的查询计划,如果仅仅是因为where字句的顺序不同,就不能选择最…
情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b,c    a,c   都可以走索引的,其他条件的查询不能走索引. 组合索引 有“最左前缀”原则.就是只从最左面的开始组合,并不是所有只要含有这三列存在的字段的查询都会用到该组合索引. 验证过程如下所示: 首先,在SQLyog中建立一个user表,如下图所示: 对中间3个字段(user_name,us…
mysql查询默认是不区分大小写的 如: select * from some_table where str=‘abc'; select * from some_table where str='ABC'; 得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做: 第一种方法: 要让mysql查询区分大小写,可以: select * from some_table where binary str='abc' select * from some_table where binary…
看到有资料说,where条件的顺序会影响查询的效率,根据的逻辑是: where条件的运行是从右到左的,将选择性强的条件放到最右边,可以先过滤掉大部分的数据(而选择性不强的条件过滤后的结果集仍然很大),在根据其它条件过滤时,需要比较的数据量就少,提高查询的效率. 当我看到这个逻辑时,自我认为不是太合理,数据库引擎在执行SQL语句时,都是要经过查询优化器的,查询优化器会将SQL进行优化,选择最优的查询计划来执行,查询优化器应该会选择最优的查询计划,如果仅仅是因为where字句的顺序不同,就不能选择最…
在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件.比如有下面一个表: select     ID,     title,     concept,     conceptLength,     addUserId,     modifyTimefrom collections_wisdom 将SQL修改如下: select     ID+1 as newID,     title,     concept,     conceptLength,     addUserId,    …
今天在另一台服务器上重新部署了网站,结果出现了以下问题: ——用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的. 测试了以下,发现不加条件查询可以查到,加上查询条件包含中文就无法找到记录. 百度发现,以下两篇文章很有帮助. http://gzxabcdefg.blog.163.com/blog/static/23451794201081554816892/ http://bbs.51cto.com/thread-1031…
MySQL查询不区分大小写的sql写法 mysql查询默认是不区分大小写的 如: select * from some_table where str=‘abc'; select * from some_table where str='ABC'; 得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做: 第一种方法: 要让mysql查询区分大小写,可以: select * from some_table where binary str='abc' select * from som…
MySQL默认的查询也不区分大小写.但作为用户信息,一旦用户名重复,又会浪费很多资源.再者,李逵.李鬼的多起来,侦辨起来很困难.要做到这一点,要么在建表时,明确大小写敏感(字段明确大小写敏感) sql : create table table_name( name ) binary ); 查询 SELECT * FROM U WHERE binary name LIKE 'a%'; SELECT * FROM U WHERE binary name LIKE 'A%'; 仅仅多了一个binary…