Mysql查询时区分大小写

本文介绍了MySQL中如何实现大小写敏感的查询,包括使用binary关键字进行精确匹配的方法,并解释了不同collate设置对大小写敏感性的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL默认的查询也不区分大小写。但是有些时候我们查询时需要区分大小写,经过看别人的文章,发现多加个单词:binary 就好了!

参考文章: http://www.cnblogs.com/zi-xing/p/4298697.html

                  http://www.cnblogs.com/pinnasky/archive/2012/09/11/2680264.html

1. 不区分大小写的情况:



2. 匹配大写的情况:



3. 匹配小写的情况:



4. 建表时需要区分大小写的情况:



深入了解:

首先,你要了解的是:在MySQL中,对于Column Collate其约定的命名方法如下:

*_bin: 表示的是binary case sensitive collation,也就是说是区分大小写的

*_cs: case sensitive collation,区分大小写

*_ci: case insensitive collation,不区分大小写


### MySQL 模糊查询是否区分大小写 MySQL 的模糊查询默认情况下是 **不区分大小写** 的,这是因为 MySQL 的 `LIKE` 运算符在进行匹配,默认会忽略字符的大小写[^1]。这种行为与字段的字符集和排序规则(collation)有关。如果字段的排序规则是大小写不敏感(如 `utf8_general_ci` 或 `latin1_swedish_ci`),那么在执行模糊查询,无论是大写字母还是小写字母都会被视为相同。 例如,在以下查询中: ```sql SELECT * FROM student_web WHERE s_name LIKE '%j%'; ``` 无论字段 `s_name` 中包含的是 `j` 还是 `J`,都会被匹配到。 #### 如何让 MySQL 模糊查询区分大小写? 如果需要让模糊查询区分大小写,可以采用以下方法: 1. **使用 `BINARY` 关键字** 通过在 `LIKE` 子句前添加 `BINARY` 关键字,可以强制 MySQL 区分大小写。例如: ```sql SELECT * FROM student_web WHERE s_name LIKE BINARY '%j%'; ``` 在此查询中,只有包含小写字母 `j` 的记录会被匹配,而包含大写字母 `J` 的记录将被忽略[^1]。 2. **修改字段的排序规则** 如果希望永久性地让某个字段的模糊查询区分大小写,可以在创建表或修改表结构,将字段的排序规则设置为大小写敏感的规则(如 `utf8_bin`)。例如: ```sql ALTER TABLE student_web MODIFY COLUMN s_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin; ``` 修改后,即使不使用 `BINARY` 关键字,模糊查询也会区分大小写[^3]。 3. **临更改排序规则** 如果只想在特定查询中改变排序规则,而不影响整个字段的设置,可以通过显式指定排序规则来实现。例如: ```sql SELECT * FROM student_web WHERE s_name COLLATE utf8_bin LIKE '%j%'; ``` 这种方式不会对表结构产生任何影响,仅适用于当前查询[^2]。 ### 示例代码 以下是一个综合示例,展示了如何在不同场景下控制模糊查询的行为: ```sql -- 默认情况下,模糊查询区分大小写 SELECT * FROM student_web WHERE s_name LIKE '%j%'; -- 匹配 'j' 和 'J' -- 使用 BINARY 关键字强制区分大小写 SELECT * FROM student_web WHERE s_name LIKE BINARY '%j%'; -- 只匹配 'j' -- 修改字段排序规则为大小写敏感 ALTER TABLE student_web MODIFY COLUMN s_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin; -- 查询后自动区分大小写 SELECT * FROM student_web WHERE s_name LIKE '%j%'; -- 只匹配 'j' -- 临更改排序规则 SELECT * FROM student_web WHERE s_name COLLATE utf8_bin LIKE '%j%'; -- 只匹配 'j' ``` ### 总结 MySQL 的模糊查询默认不区分大小写,但可以通过 `BINARY` 关键字、修改字段排序规则或临更改排序规则的方式,实现区分大小写的模糊查询[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值