表结构
desc my_user;
id int(16)
name varchar(16)
create_time timestamp
update_time timestamp
测试
- 先插入
insert into my_user set name="AA";
- 查询
select * from my_user where binary name="Aa";
select * from my_user where binary name="aa";
分析
这两条都能找到值。这点和数据库的 lower_case_file_system 无关
show global variables like "%lower_case%";
lower_case_file_system ON / OFF
无论 lower_case_file_system 是 ON / OFF, 都能查到。
解决办法
- 查询时加 binary
select * from my_user where binary name="Aa";
- 修改表结构 / 建表的时候注意
create table some_table(
str char(20) binary
)
对于CHAR、VARCHAR和TEXT类型,BINARY属性可以为列分配该列字符集的 校对规则。BINARY属性是指定列字符集的二元 校对规则的简写。排序和比较基于数值字符值。因此也就自然区分了大小写。










网友评论