SQL语言中的LIKE操作符是用于实现模糊查询的核心工具,它不需要完全匹配字段的完整值,只要字段内容符合指定的匹配规则就可以返回结果,在日常数据检索场景中应用非常广泛。

LIKE操作符基本语法
LIKE操作符通常和WHERE子句配合使用,基本语法格式如下:
SELECT 列名1, 列名2, ... FROM 表名 WHERE 列名 LIKE 匹配模式;
其中匹配模式就是由普通字符和通配符组成的字符串,用来定义匹配规则。
常用通配符说明
LIKE操作符的模糊匹配能力主要通过通配符实现,最常用的两个通配符如下:
- 百分号(%):匹配任意长度的字符串,包括空字符串,可以出现在匹配模式的任意位置。
- 下划线(_):匹配单个任意字符,只能匹配一个字符,不能多也不能少。
不同场景使用示例
匹配以特定字符开头的内容
如果要查询用户表中用户名以“张”开头的所有记录,可以这样写:
-- 查询用户名以张开头的所有用户 SELECT user_id, user_name, age FROM user_info WHERE user_name LIKE '张%';
匹配以特定字符结尾的内容
查询邮箱地址以“ipipp.com”结尾的用户记录:
-- 查询邮箱后缀为ipipp.com的用户 SELECT user_id, user_name, email FROM user_info WHERE email LIKE '%ipipp.com';
匹配包含特定字符的内容
查询商品表中商品名称包含“手机”的所有商品:
-- 查询商品名包含手机的商品 SELECT goods_id, goods_name, price FROM goods_info WHERE goods_name LIKE '%手机%';
匹配固定长度的内容
如果要查询手机号后四位是“1234”的用户,因为手机号是11位,后四位固定,前7位任意,可以用下划线通配符:
-- 查询手机号后四位为1234的用户 SELECT user_id, user_name, phone FROM user_info WHERE phone LIKE '_______1234';
使用注意事项
在使用LIKE操作符时需要注意几个问题:
- 如果匹配模式中没有通配符,LIKE的效果和等号(=)完全一致,会进行精确匹配。
- 如果要匹配的内容本身包含百分号或者下划线,需要使用转义字符,不同数据库的转义方式略有不同,比如MySQL可以用反斜杠转义,也可以自定义转义字符。
- LIKE操作符的查询效率通常比精确匹配低,尤其是匹配模式以百分号开头时,数据库无法使用索引,数据量大的表要谨慎使用。
下面是一个MySQL中匹配内容包含百分号的示例,查询折扣字段包含“%”的商品:
-- 查询折扣信息包含%的商品,使用\转义% SELECT goods_id, goods_name, discount FROM goods_info WHERE discount LIKE '%\%%';
掌握LIKE操作符的用法后,就可以灵活应对各种模糊查询的需求,结合不同的通配符组合,能覆盖绝大多数非精确的字段匹配场景。