mysql模糊查询区分大小写吗
时间: 2025-06-13 11:28:00 浏览: 18
### 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]。
阅读全文
相关推荐


















