⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

SQL LIKE 模糊查询

学习 LIKE 和通配符 % _ · 难度:入门 · +10XP

SQL LIKE 模糊查询

在数据查询中,用户往往不记得精确值,只记得部分信息——比如姓名里有个"张"字,或者邮箱是 @qq.com 结尾。SQL 的 LIKE 操作符就是为这种模糊匹配场景设计的,配合通配符 %_,可以灵活地匹配各种文本模式,是搜索功能和数据筛选中最常用的工具之一。

LIKE 通配符详解

通配符含义示例匹配结果
%匹配任意多个字符(含0个)'张%'张三、张小明、张
_精确匹配一个字符'_三'张三、李三、王三
[abc]匹配括号中任一字符'[张李]三'张三、李三
[a-z]匹配范围内任一字符'[A-C]%'以A/B/C开头

基本用法示例

-- 查询姓"张"的所有学生
SELECT * FROM students WHERE name LIKE '张%';

-- 查询名字为两个字且以"三"结尾的学生(如张三、李三) SELECT * FROM students WHERE name LIKE '_三';

-- 查询姓名中包含"小"字的学生 SELECT * FROM students WHERE name LIKE '%小%';

-- 查询邮箱以 @qq.com 结尾的用户 SELECT * FROM users WHERE email LIKE '%@qq.com';

NOT LIKE 反向匹配

-- 查询不姓"张"的学生
SELECT * FROM students WHERE name NOT LIKE '张%';

-- 查询邮箱不是 Gmail 的用户 SELECT * FROM users WHERE email NOT LIKE '%@gmail.com';

LIKE 与多个条件组合

-- 姓张且分数大于80
SELECT * FROM students
WHERE name LIKE '张%' AND score > 80;

-- 邮箱包含多种域名(OR组合) SELECT * FROM users WHERE email LIKE '%@qq.com' OR email LIKE '%@163.com';

LIKE 的性能问题

  1. 前缀匹配快LIKE 'abc%' 可以使用索引(如果列上有索引)
  2. 中缀/后缀慢LIKE '%abc'LIKE '%abc%' 无法使用索引,导致全表扫描
  3. 大数据量优化:考虑使用全文索引(FULLTEXT)替代 LIKE 做文本搜索
  4. 转义特殊字符:通配符本身要作为普通字符匹配时,用 ESCAPE 子句:LIKE '10%' ESCAPE '\'

实战任务

  1. 查询所有姓"张"的学生
  2. 查询名字为两个字符且第二个字是"三"的学生
  3. 查询邮箱以 @163.com 结尾的用户
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 146 篇
0 完成
🔥 0