字段编码校验规则控制该字段大小写敏感
不同的字符集有多种校对规则,一般而言,校对规则以其相关的字符集名开始,通常包括一个语言名,并且以_ci
(大小写不敏感)、_cs
(大小写敏感)或_bin
(二元)结束 。
比如utf8
字符集: utf8_general_ci
,表示不区分大小写,这个是utf8
字符集默认的校对规则;utf8_general_cs
表示区分大小写,utf8_bin
表示二进制比较,同样也区分大小写。
验证utf8_bin
编码的字段区分大小写
表user_test_1
name
字段校对规则设置为utf8_bin
CREATE TABLE `user_test_1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '名称',
PRIMARY KEY (`id`),
KEY `uniq_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
表user_test_2
name
字段校对规则设置为默认
CREATE TABLE `user_test_2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '名称',
PRIMARY KEY (`id`),
KEY `uniq_name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
user_test_1
和user_test_2
都有一条记录
id | name |
---|---|
1 | 奥迪A |
test
select * from `user_test_1` where `name` = '奥迪a';
select * from `user_test_2` where `name` = '奥迪a';

使用BINARY
关键字让utf8_general_ci
编码字段区分大小写
select * from `user_test_2` where BINARY `name` = '奥迪a'; -- 查询不出‘奥迪A’的数据