计算机应用

导航

第11周 高级数据过滤与通配符查询

第11周 · 高级数据过滤与通配符查询

只记得名字里带个"伟"字、不记得全名怎么办?这周学模糊查询:用 LIKE 配通配符去"按模式"找,再了解正则 REGEXP 和取反 NOT


一、知识点:为什么用模糊查询

= 是"完全相等"匹配,必须一字不差。现实中常只记得片段,就要用 LIKE模式匹配


二、操作教程:LIKE + %(任意多个字符)

% 代表任意长度(含0个)的任意字符

SELECT * FROM student WHERE sname LIKE '张%';     -- 姓张的(张开头,后面任意)
SELECT * FROM student WHERE sname LIKE '%伟%';     -- 名字里含"伟"
SELECT * FROM student WHERE sname LIKE '%芳';       -- 以"芳"结尾

'张%':开头是张,后面随便。%伟%:前后都可有字,只要中间有伟。


三、操作教程:LIKE + _(单个字符)

_ 代表恰好一个任意字符(不能多也不能少)。

SELECT * FROM student WHERE sname LIKE '张_';      -- 姓张且正好两个字
SELECT * FROM student WHERE sname LIKE '___';      -- 正好三个字的人名

%_ 区别:% 长度任意,_ 长度固定为 1。查"姓张单名"用 张_;查"姓张任意名"用 张%


四、操作教程:NOT LIKE 取反

-- 名字里不含"王"的
SELECT * FROM student WHERE sname NOT LIKE '%王%';

-- 作业题3:不含"王" 且 年龄<20
SELECT sname, sage FROM student
WHERE sname NOT LIKE '%王%' AND sage < 20;

五、操作教程:ESCAPE 转义

要查"名字里含下划线 _"这种本身也是通配符的字符,得转义:

-- 查名字里含下划线_ 的记录(_ 是字面下划线,不是通配符)
SELECT * FROM student WHERE sname LIKE '%a_%' ESCAPE 'a';

ESCAPE 'a' 表示 a 后面的字符按字面处理,a_ 里的 _ 就是真下划线。


六、知识点:REGEXP 正则表达式(了解)

REGEXP 用正则规则匹配,比 LIKE 更灵活:

SELECT * FROM student WHERE sname REGEXP '^张';     -- 以"张"开头(^ 开头)
SELECT * FROM student WHERE sname REGEXP '伟$';     -- 以"伟"结尾($ 结尾)
SELECT * FROM student WHERE sname REGEXP '伟|芳';    -- 含"伟"或"芳"(| 或)
SELECT * FROM student WHERE sname REGEXP '张.';     -- "张"后跟任意一个字(. 任意单字符)
正则符号 含义
^ 字符串开头
$ 字符串结尾
. 任意一个字符
|

考试以 LIKE 为主,REGEXP 了解即可,别冲淡主线。


七、综合实操:作业三题

-- 题1:姓张(开头)
SELECT * FROM student WHERE sname LIKE '张%';

-- 题2:计算机系或软件工程系(用 IN)
SELECT * FROM student WHERE sdept IN ('计算机系','软件工程系');

-- 题3:不含"王" 且 年龄<20
SELECT sname, sage FROM student
WHERE sname NOT LIKE '%王%' AND sage < 20;

八、易混点排查表

现象 解决方法
%_ 分不清 % 任意长,_ 仅1个字符
想查"姓张单名"用 张% 错!单名用 张_
要查真下划线查不到 ESCAPE 转义
NOT LIKE 漏掉 NULL 行 NULL 不参与 LIKE 比较;需 OR 列 IS NULL
LIKE 查大表很慢 前导通配符 %xx 无法用索引,数据大时慢
REGEXP 写错 正则仅了解,主考 LIKE;符号别混

九、小测验(自测)

  1. LIKE '张%'LIKE '张_' 分别匹配什么?区别在哪?
  2. 查"名字里含伟"用什么 LIKE 模式?
  3. 查"名字不含王且年龄小于20"的 SQL 怎么写?
  4. 正则 ^张伟$ 中的 ^$ 分别表示什么?

【声明】本文由 AI 辅助生成,仅供 MySQL 数据库教学参考,如有疑误以教材为准。

posted on 2026-08-29 10:26  eagle福  阅读(5)  评论(0)    收藏  举报