问题介绍
MySQL中大小写敏感问题经常会带来很多问题:
比如说:
select * from test
和 SELECT * FROM TEST
是无差别的。这个还好理解,但是如果遇到下面这样的情况:
select * from test where name = 'del'
和select * from test where name='DEL'
无差别
那就很可怕了!!
解决方法
这是什么原因呢?原来是因为MySQL中字符编码导致的。简单的说:
utf-8_bin
以二进制值进行比较,也就是区分大小写
uft-8_general_ci
一般比较,不区分大小写 ‘A’=’a’collation:校对
摘自: mysql中的collation什么意思 其中的utf8-bin
所以才会发生上面那种这么奇怪的问题!
另外,网上也有说添加binary
关键字进行字段修饰的解决方法:
alter table test modify name binary;
其实本质上也是把collatioin(校对)模式改成二进制校对,实现大小写敏感。