在MySQL数据库的日常使用中,搜索函数是我们获取目标数据的核心工具,通过合理使用搜索函数可以快速从海量数据中筛选出符合条件的内容,大幅提升数据查询效率。

基础搜索函数介绍
MySQL内置了多种搜索相关的函数,最常用的是LIKE模糊匹配函数和IN范围匹配函数,这两个函数可以满足大部分基础搜索需求。
LIKE函数
LIKE函数用于实现模糊搜索,配合通配符使用可以匹配指定规则的数据,其中%代表任意长度的任意字符,_代表单个任意字符。
IN函数
IN函数用于匹配指定范围内的多个值,只要目标字段的值在给定范围内就会返回匹配结果,比多个OR条件拼接更简洁高效。
单条件搜索实例
假设我们有一个用户表user_info,表结构如下:
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | int | 用户ID |
| username | varchar(50) | 用户名 |
| age | int | 年龄 |
| city | varchar(30) | 所在城市 |
如果我们需要搜索所有用户名中包含“张”字的用户,可以使用LIKE函数实现,具体SQL代码如下:
-- 搜索用户名包含张的用户 SELECT id, username, age, city FROM user_info WHERE username LIKE '%张%';
如果我们需要搜索年龄是20、25、30岁的用户,可以使用IN函数实现,代码如下:
-- 搜索年龄为20、25、30的用户 SELECT id, username, age, city FROM user_info WHERE age IN (20, 25, 30);
多条件组合搜索实例
实际业务中往往需要多个搜索条件组合使用,比如搜索所在城市是北京,且用户名包含“李”字的用户,我们可以将LIKE和等值判断组合使用:
-- 多条件组合搜索 SELECT id, username, age, city FROM user_info WHERE city = '北京' AND username LIKE '%李%';
如果需要搜索年龄在18到30岁之间,且所在城市是上海或者广州的用户,可以结合BETWEEN和IN函数:
-- 范围加范围组合搜索
SELECT id, username, age, city
FROM user_info
WHERE age BETWEEN 18 AND 30
AND city IN ('上海', '广州');
搜索结果处理
搜索函数返回的结果默认是无序的,我们可以通过ORDER BY对结果进行排序,比如按照年龄升序排列搜索到的用户:
-- 搜索后按年龄升序排序 SELECT id, username, age, city FROM user_info WHERE username LIKE '%王%' ORDER BY age ASC;
如果只需要返回前10条匹配结果,可以加上LIMIT限制返回数量:
-- 搜索后限制返回10条结果
SELECT id, username, age, city
FROM user_info
WHERE city IN ('深圳', '杭州')
LIMIT 10;
在使用搜索函数时需要注意,LIKE函数如果以%开头会导致索引失效,大数据量表的搜索尽量把确定前缀放在前面,提升查询性能。同时IN函数的参数数量不宜过多,否则也会影响查询效率。