前言学会精准条件查询后工作中又会遇到新难题需要按关键词模糊搜索比如搜姓张、名字带 “明” 的用户不会写LIKE分不清%和_两个通配符到底有什么区别经常用错数据表有空值 NULL用普通查不到数据统计总是少一部分分不清NULL 空值和空字符串 筛选结果一直出错面试常考模糊查询原理、通配符含义、NULL 为什么不能用等于判断。本篇专门攻克LIKE 模糊查询、两大通配符、空值 IS NULL 判断大白话讲解 完整案例 避坑指南学完搞定所有模糊搜索和空值筛选场景。知识点一、什么是 LIKE 模糊查询LIKE专门用于字符串模糊匹配搭配通配符使用放在 WHERE 后面。 适用场景搜索姓名、昵称、地址、商品名称、备注含某个关键字。 语法格式sqlSELECT 字段列表 FROM 表名 WHERE 字段 LIKE 匹配规则;二、两大核心通配符% 百分号代表任意 0 个或多个字符可以匹配任意长度内容。_ 下划线代表任意 1 个字符只能匹配单个字符占位。三、LIKE 四种常用匹配场景张%以张开头%明以明结尾%华%中间包含华字李_李后面跟任意一个字四、空值核心知识点NULL未赋值、未知空值 空字符串有值只是内容为空绝对不能用 NULL、! NULL空值专用判断IS NULL判断是否为空IS NOT NULL判断是否不为空通俗类比 实例表格通俗类比%像万能补丁能代替任意多字_像单个空位只能填一个字IS NULL就是空白没填写空字符串 是填了但写了个空。演示数据表user 用户表表格idnameagecityemail1张三25北京zsqq.com2张小凡22上海NULL3王五28广州wangqq.com4李六30北京5李明宇35深圳lmqq.comSQL 代码演示1. % 通配符实战sql-- 1. 以张开头 SELECT * FROM user WHERE name LIKE 张%; -- 2. 以宇结尾 SELECT * FROM user WHERE name LIKE %宇; -- 3. 名字包含 明 字 SELECT * FROM user WHERE name LIKE %明%;2. _ 下划线通配符实战sql-- 李开头总共两个字李X SELECT * FROM user WHERE name LIKE 李_;3. 空值 NULL 查询sql-- 查询email为NULL的用户 SELECT * FROM user WHERE email IS NULL; -- 查询email不为NULL的用户 SELECT * FROM user WHERE email IS NOT NULL;4. 空字符串 查询sql-- 查询是空字符串的要用 SELECT * FROM user WHERE email ;易错 / 避坑点❌ 混淆 % 和 _ ✅ % 匹配任意多个字符_ 只匹配单个字符。❌ 模糊查询不加单引号 ✅ 字符串模糊匹配规则必须加单引号。❌ 用WHERE email NULL查空值 ✅ 永远无效必须用IS NULL。❌ 把 NULL 和 空字符串 当成一样 ✅ NULL 是未赋值 是有值为空统计、筛选结果完全不同。❌ 大表随意用前后模糊%关键词%✅ 会索引失效查询变慢生产尽量避免首尾都加 %。核心小结LIKE实现字符串模糊查询搭配 % 和 _ 两个通配符%匹配任意多个字符_只匹配单个字符四种常用模糊开头匹配、结尾匹配、包含匹配、固定长度匹配NULL 空值只能用IS NULL / IS NOT NULL判断空字符串 用 判断和 NULL 不是一回事大表尽量少用%关键词%全模糊容易造成索引失效、慢查询。思考题思考题 1LIKE 王_和LIKE 王%有什么区别答案LIKE 王_匹配王后面刚好 1 个字符LIKE 王%匹配王后面任意 0 个或多个字符。思考题 2查出名字中包含 “六” 字的所有用户写出 SQL。答案sqlSELECT * FROM user WHERE name LIKE %六%;思考题 3查询 email 为空值 NULL 的用户正确写法是什么答案sqlSELECT * FROM user WHERE email IS NULL;
SQL 模糊查询 + NULL 空值。LIKE 通配符 % 和_、IS NULL
发布时间:2026/5/22 20:05:25
前言学会精准条件查询后工作中又会遇到新难题需要按关键词模糊搜索比如搜姓张、名字带 “明” 的用户不会写LIKE分不清%和_两个通配符到底有什么区别经常用错数据表有空值 NULL用普通查不到数据统计总是少一部分分不清NULL 空值和空字符串 筛选结果一直出错面试常考模糊查询原理、通配符含义、NULL 为什么不能用等于判断。本篇专门攻克LIKE 模糊查询、两大通配符、空值 IS NULL 判断大白话讲解 完整案例 避坑指南学完搞定所有模糊搜索和空值筛选场景。知识点一、什么是 LIKE 模糊查询LIKE专门用于字符串模糊匹配搭配通配符使用放在 WHERE 后面。 适用场景搜索姓名、昵称、地址、商品名称、备注含某个关键字。 语法格式sqlSELECT 字段列表 FROM 表名 WHERE 字段 LIKE 匹配规则;二、两大核心通配符% 百分号代表任意 0 个或多个字符可以匹配任意长度内容。_ 下划线代表任意 1 个字符只能匹配单个字符占位。三、LIKE 四种常用匹配场景张%以张开头%明以明结尾%华%中间包含华字李_李后面跟任意一个字四、空值核心知识点NULL未赋值、未知空值 空字符串有值只是内容为空绝对不能用 NULL、! NULL空值专用判断IS NULL判断是否为空IS NOT NULL判断是否不为空通俗类比 实例表格通俗类比%像万能补丁能代替任意多字_像单个空位只能填一个字IS NULL就是空白没填写空字符串 是填了但写了个空。演示数据表user 用户表表格idnameagecityemail1张三25北京zsqq.com2张小凡22上海NULL3王五28广州wangqq.com4李六30北京5李明宇35深圳lmqq.comSQL 代码演示1. % 通配符实战sql-- 1. 以张开头 SELECT * FROM user WHERE name LIKE 张%; -- 2. 以宇结尾 SELECT * FROM user WHERE name LIKE %宇; -- 3. 名字包含 明 字 SELECT * FROM user WHERE name LIKE %明%;2. _ 下划线通配符实战sql-- 李开头总共两个字李X SELECT * FROM user WHERE name LIKE 李_;3. 空值 NULL 查询sql-- 查询email为NULL的用户 SELECT * FROM user WHERE email IS NULL; -- 查询email不为NULL的用户 SELECT * FROM user WHERE email IS NOT NULL;4. 空字符串 查询sql-- 查询是空字符串的要用 SELECT * FROM user WHERE email ;易错 / 避坑点❌ 混淆 % 和 _ ✅ % 匹配任意多个字符_ 只匹配单个字符。❌ 模糊查询不加单引号 ✅ 字符串模糊匹配规则必须加单引号。❌ 用WHERE email NULL查空值 ✅ 永远无效必须用IS NULL。❌ 把 NULL 和 空字符串 当成一样 ✅ NULL 是未赋值 是有值为空统计、筛选结果完全不同。❌ 大表随意用前后模糊%关键词%✅ 会索引失效查询变慢生产尽量避免首尾都加 %。核心小结LIKE实现字符串模糊查询搭配 % 和 _ 两个通配符%匹配任意多个字符_只匹配单个字符四种常用模糊开头匹配、结尾匹配、包含匹配、固定长度匹配NULL 空值只能用IS NULL / IS NOT NULL判断空字符串 用 判断和 NULL 不是一回事大表尽量少用%关键词%全模糊容易造成索引失效、慢查询。思考题思考题 1LIKE 王_和LIKE 王%有什么区别答案LIKE 王_匹配王后面刚好 1 个字符LIKE 王%匹配王后面任意 0 个或多个字符。思考题 2查出名字中包含 “六” 字的所有用户写出 SQL。答案sqlSELECT * FROM user WHERE name LIKE %六%;思考题 3查询 email 为空值 NULL 的用户正确写法是什么答案sqlSELECT * FROM user WHERE email IS NULL;