mysql查询时字符串区分大小写问题
mysql默认情况下查询语句的where条件是不区分大小写的。
建表语句CREATE TABLE `test_users` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) NOT NULL DEFAULT "" COMMENT "姓名", PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT="用户表";
初始化语句INSERT INTO `test_users` (`id`, `name`) VALUES (1, "Abc"), (2, "abc"), (3, "sss");
默认不区分大小写select * from test_users where name = "abc";
输出结果
id
name
1
Abc
2
abc索引情况explain select * from test_users where name = "abc";
索引结果:
id
select_type
table
partitions
type
possible_keys
key
key_len
ref
rows
filtered
Extra
1
SIMPLE
test_users
NULL
ref
idx_name
idx_name
122
const
2
100
Using index
命中了索引index_name,并且type = const区分大小写的方法
区分大小写的方法有3种:字段前添加关键字: binary建表时字段加入关键字:binary修改字段字符集:方案一:查询条件字段前添加关键字:binary
查询语句select * from test_users where binary name = "abc";
输出结果
id
name
2
abc查询语句索引情况explain select * from test_users where binary name = "abc";
输出结果:
id
select_type
table
partitions
type
possible_keys
key
key_len
ref
rows
filtered
Extra
1
SIMPLE
test_users
NULL
index
NULL
idx_name
122
NULL
3
100
Using where; Using index
可以看出来命中了索引 idx_name,并且 type = index方案二:建表时字段加入关键字:binaryCREATE TABLE `test_users` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) binary NOT NULL DEFAULT "" COMMENT "姓名", PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT="用户表";
查询语句select * from test_users where name = "abc";
输出结果
id
name
2
abc查询语句索引情况explain select * from test_users where name = "abc";
输出结果:
id
select_type
table
partitions
type
possible_keys
key
key_len
ref
rows
filtered
Extra
1
SIMPLE
test_users
NULL
ref
idx_name
idx_name
122
const
1
100
Using index
可以看出命中了 idx_name索引,并且type = ref方案三:修改字段的字符序(collation)
字符集(character set)和字符序(collation)是两个东西, 一个字符集对应1个或者多个字符序。
可以通过SHOW COLLATION查看数据库支持的字符序,通过SHOW CHARACTER SET字符集SHOW COLLATION where collation like "utf8mb4_%"命令
Collation
Charset
Id
Default
Compiled
Sortlen
utf8mb4_general_ci
utf8mb4
45
Yes
Yes
1
utf8mb4_bin
utf8mb4
46
Yes
1
utf8mb4_unicode_ci
utf8mb4
224
Yes
8
utf8mb4_icelandic_ci
utf8mb4
225
Yes
8
utf8mb4_latvian_ci
utf8mb4
226
Yes
8
utf8mb4_romanian_ci
utf8mb4
227
Yes
8
utf8mb4_slovenian_ci
utf8mb4
228
Yes
8
utf8mb4_polish_ci
utf8mb4
229
Yes
8
utf8mb4_estonian_ci
utf8mb4
230
Yes
8
utf8mb4_spanish_ci
utf8mb4
231
Yes
8
utf8mb4_swedish_ci
utf8mb4
232
Yes
8
utf8mb4_turkish_ci
utf8mb4
233
Yes
8
utf8mb4_czech_ci
utf8mb4
234
Yes
8
utf8mb4_danish_ci
utf8mb4
235
Yes
8
utf8mb4_lithuanian_ci
utf8mb4
236
Yes
8
utf8mb4_slovak_ci
utf8mb4
237
Yes
8
utf8mb4_spanish2_ci
utf8mb4
238
Yes
8
utf8mb4_roman_ci
utf8mb4
239
Yes
8
utf8mb4_persian_ci
utf8mb4
240
Yes
8
utf8mb4_esperanto_ci
utf8mb4
241
Yes
8
utf8mb4_hungarian_ci
utf8mb4
242
Yes
8
utf8mb4_sinhala_ci
utf8mb4
243
Yes
8
utf8mb4_german2_ci
utf8mb4
244
Yes
8
utf8mb4_croatian_ci
utf8mb4
245
Yes
8
utf8mb4_unicode_520_ci
utf8mb4
246
Yes
8
utf8mb4_vietnamese_ci
utf8mb4
247
Yes
8
常用的字符序:utf8_general_ci & utf8mb4_general_ci: 不区分大小写 utf8_bin & utf8mb4_bin: 区分大小写
建表语句: CREATE TABLE `test_users3` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT "" COMMENT "姓名", PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT="用户表";
查询语句:select * from test_users where name = "abc";
输出结果
id
name
2
abc查询语句索引情况explain select * from test_users where name = "abc";
输出结果:
id
select_type
table
partitions
type
possible_keys
key
key_len
ref
rows
filtered
Extra
1
SIMPLE
test_users
NULL
index
NULL
idx_name
122
NULL
3
100
Using where; Using index
命中了索引idx_name,并且 type = index
维密的内衣在现实生活中能穿吗?维密秀场上的内衣,其实都是设计师的款式,超模们穿上之后,呈现出华丽的模样,但是维密设计的内衣多种多样,除了这种特意设计的秀场款式,还有很多日常的款式。这种精致闪耀的超模款式,一般人
国产车的耐久性真的不好吗?其实国产车跟合资进口是有一定差距的,但是关于质量问题的话,一般大品牌国产车类似传祺,吉利,比亚迪那种质量都是可以的。即使是后期出问题了,维修费用也是低于合资品牌的。其实国产车的发展
为什么南方没有炖菜,以汤和炒菜为主?其实题主已经把答案说得差不多了饮食习惯的形成,主要就是气候条件造成的高寒地区的人们需要高热量(多动物脂肪),而南方地区气候不同,不需要养膘来驱寒。记得有一年去北京出差,当地的朋友请
高铁的票价什么时候能降到和火车票价一样?现在高铁票价大约是普通火车票价的3倍。高铁票价若要降到和普通火车票价一样,人均国民收入应该也需要提高约三倍。同时国家财政对铁路服务的补贴力度需保持不变,铁路建设和运营服务公司需保持
殡仪馆化妆师的职业,一月3万,你会去吗?为什么?作为殡葬员工,曾经也在防腐整容车间实习过。说实话如果有殡仪馆的化妆师(入殓师)能月薪3万。告诉我是哪家殡仪馆,我肯定去。殡仪馆的化妆师也叫防腐整容师,其主要的工作职责给遗体进行修复
国足12强赛,李铁为什么不用归化球员?谢谢邀请。我也不知道为什么,阿兰是没有能力还是状态不行,总是替补,甚至连场都不能上?赛前不是说野牛洛国富非常活跃兴奋吗?国内真没优秀中卫了吗?在俱乐部都是替补而且非科班中卫出身的于
现役球员里除了詹姆斯,还有谁有可能拿到30000分?为啥呢?截止20192020赛季常规赛结束,现在效力于洛杉矶湖人队的勒布朗詹姆斯职业生涯已经拿到了34241分,排在历史总得分榜第三位,排在现役球员总得分榜的第一位,也是唯一一位超过300
NBA历史上有哪些与冠军失之交臂的球队最可惜?NBA总共30支球队每年只有一支球队能够笑到最后,如果要说遗憾肯定是29支球队的遗憾,但是在总决赛的赛场,有些球队球迷是真的希望他们能赢,他们或许是一支创造奇迹的超级强队,或者是经
为什么巅峰时期的张继科对战马龙鲜有胜绩?张继科和马龙属于同时代的顶级球员,两人都曾站在乒坛之巅,完成了大满贯壮举。有意思的是,两位双子星,一个因为伤病导致退役状态(只差官宣),一个因为伤病不能按时打卡比赛,只能选择性的参
洗碗机有什么优点和弊端?你如何评价?现在科技越来越发达,家居用品也越来越多了。能给我们省下时间和力气,让我们生活更方便。洗碗机就是其中一个好产品。当然,也有优点缺点。首先,我觉得有了洗碗机,就再也不用发愁谁洗碗的问题
为什么有些女生穿裤子,不用扎腰带也不会掉?为什么不用扎腰带有下面几点1女生和男生的生理结构是不同的。相对于男生来说女生一般都拥有更宽的胯骨和盆骨,即便是非常瘦的女生往往也是盆骨突出,这是女性生理结构造成的,也正因为胯骨大,