MYSQL区分大小写的问题:
如果直接使用MYSQL客户端用SQL语句查询数据库中的数据,SQL语句中字段的大写或小写查出的数据是一样的,说明查询条件对字段的大小写是不敏感(默认)。
怎样让MYSQL对大小写敏感?
解决方案一:
MYSQL区别大小写需要设置collate(校对) 。 collate规则:
*_bin: 表示的是binary
case
sensitive collation,也就是说是区分大小写的
*_cs:
case
sensitive collation,区分大小写
*_ci:
case
insensitive collation,不区分大小写
解决方法。
1.可以将查询条件用binary()括起来。 比如:
select
*
from
emp
where
binary username=
'jack'
;
2. 可以修改该字段的collation 为 binary
比如:
ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;
解决方案二:
mysql查询默认是不区分大小写的 如:
select
*
from
emp
where
username=‘jack';
select
*
from
emp
where
username='JACK'
;
得到的结果是一样的,如果我们需要进行区分的话可以按照如下方法来做:
第一种方法:
要让mysql查询区分大小写,可以:
select
*
from
emp
where
binary username='jack'
select
*
from
emp
where
binary username='JACK'
第二方法:
在建表时时候加以标识
create table emp(
username varchar
(20) binary
)
原理:对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的校对规则。BINARY属性是指定列字符集的二元校对规则的简写。排序和比较基于数值字符值,因此也就自然区分了大小写。