mysql 模糊搜索与校对规则

本文介绍MySQL中使用LIKE进行模糊查询时的行为差异,特别是如何通过调整字段的校对规则来实现大小写敏感的查询。同时展示了如何利用BINARY关键字使大小写敏感的模糊查询适用于任何字段。

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

mysql 默认使用 like 进行模糊搜索的时候是不区分大小写的。

但是如果在创建表结构的时候选择了部分校对规则,比如下图的utf8_bin此时就在模糊搜索的时候就严格区分大小写了。(表创建使用HeidiSQL)

CREATE TABLE `test_table` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`name1` VARCHAR(50) NOT NULL COLLATE 'utf8_bin',         #列级别
	`name2` VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci',
	PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8_general_ci'   #表级别
ENGINE=InnoDB
;

上图的测试表中name1字段的校对规则选的是utf8_bin, name2的校对规则是和表级别的校对规则一样的utf8_general_ci

插入几条简单数据

INSERT INTO `test_table` (`id`, `name1`, `name2`) VALUES
	(1, 'Ok', 'Abc'),
	(2, 'ok', 'aBc'),
	(3, 'OK', 'abc'),
	(4, 'ok', 'ABC');

模糊查询name1

SELECT id,NAME1 FROM test_table WHERE NAME1 LIKE '%O%';

+----+-------+
| id | NAME1 |
+----+-------+
|  1 | Ok    |
|  3 | OK    |
+----+-------+

模糊查询name2

SELECT id,NAME2 FROM test_table WHERE NAME2 LIKE '%A%';

+----+-------+
| id | NAME2 |
+----+-------+
|  1 | Abc   |
|  2 | aBc   |
|  3 | abc   |
|  4 | ABC   |
+----+-------+

   此时如果需要区分大小写可以在LIKE后面加上 BINARY  

SELECT id,NAME2 FROM test_table WHERE NAME2 LIKE BINARY '%A%'

+----+-------+
| id | NAME2 |
+----+-------+
|  1 | Abc   |
|  4 | ABC   |
+----+-------+

参考链接:MYSQL中的COLLATE是什么? - 腾讯云+社区 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值