MySQL查询时区分大小写的方法

本文介绍如何在MySQL中实现大小写敏感的查询操作。通过使用BINARY关键字或在创建表时指定字段为BINARY属性,可以使LIKE操作符区分大小写。这对于需要精确匹配的应用场景非常有用。

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


mysql查询默认是不区分大小写的 如:

  1. select  * from  table_name where  a like  'a%'   
  2. select  * from  table_name where  a like  'A%'   

效果是一样的。
要让mysql查询区分大小写,可以:
  1. select  * from  table_name where  binary  a like  'a%'   
  2. select  * from  table_name where  binary  a like  'A%'   


也可以在建表时,加以标识
  1. create  table  table_name(  
  2.      a varchar (20) binary    

### 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、付费专栏及课程。

余额充值