当前位置: 首页 > news >正文

SQL 模糊查询 + NULL 空值。LIKE 通配符 % 和_、IS NULL

前言

学会精准条件查询后,工作中又会遇到新难题:

  • 需要按关键词模糊搜索,比如搜姓张、名字带 “明” 的用户,不会写LIKE
  • 分不清%_两个通配符到底有什么区别,经常用错;
  • 数据表有空值 NULL,用普通=查不到,数据统计总是少一部分;
  • 分不清NULL 空值空字符串 '',筛选结果一直出错;
  • 面试常考:模糊查询原理、通配符含义、NULL 为什么不能用等于判断。

本篇专门攻克LIKE 模糊查询、两大通配符、空值 IS NULL 判断,大白话讲解 + 完整案例 + 避坑指南,学完搞定所有模糊搜索和空值筛选场景。

知识点

一、什么是 LIKE 模糊查询

LIKE专门用于字符串模糊匹配,搭配通配符使用,放在 WHERE 后面。 适用场景:搜索姓名、昵称、地址、商品名称、备注含某个关键字。 语法格式:

sql

SELECT 字段列表 FROM 表名 WHERE 字段 LIKE '匹配规则';

二、两大核心通配符

  1. % 百分号代表任意 0 个或多个字符,可以匹配任意长度内容。
  2. _ 下划线代表任意 1 个字符,只能匹配单个字符占位。

三、LIKE 四种常用匹配场景

  1. '张%':以开头
  2. '%明':以结尾
  3. '%华%'中间包含华字
  4. '李_':李后面跟任意一个字

四、空值核心知识点

  1. NULL:未赋值、未知空值;
  2. '' 空字符串:有值,只是内容为空;
  3. 绝对不能用 = NULL、!= NULL
  4. 空值专用判断:
  • IS NULL:判断是否为空
  • IS NOT NULL:判断是否不为空

通俗类比 + 实例表格

通俗类比

  • %万能补丁,能代替任意多字;
  • _单个空位,只能填一个字;
  • IS NULL就是空白没填写
  • 空字符串 ''填了但写了个空

演示数据表:user 用户表

表格

idnameagecityemail
1张三25北京zs@qq.com
2张小凡22上海NULL
3王五28广州wang@qq.com
4李六30北京''
5李明宇35深圳lm@qq.com

SQL 代码演示

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 = '';

易错 / 避坑点

  1. ❌ 混淆 % 和 _ ✅ % 匹配任意多个字符;_ 只匹配单个字符。

  2. ❌ 模糊查询不加单引号 ✅ 字符串模糊匹配规则必须加单引号

  3. ❌ 用WHERE email = NULL查空值 ✅ 永远无效,必须用IS NULL

  4. ❌ 把 NULL 和 空字符串 '' 当成一样 ✅ NULL 是未赋值;'' 是有值为空,统计、筛选结果完全不同。

  5. ❌ 大表随意用前后模糊%关键词%✅ 会索引失效,查询变慢,生产尽量避免首尾都加 %。

核心小结

  1. LIKE实现字符串模糊查询,搭配 % 和 _ 两个通配符;
  2. %匹配任意多个字符,_只匹配单个字符;
  3. 四种常用模糊:开头匹配、结尾匹配、包含匹配、固定长度匹配;
  4. NULL 空值只能用IS NULL / IS NOT NULL判断;
  5. 空字符串 '' 用= ''判断,和 NULL 不是一回事;
  6. 大表尽量少用%关键词%全模糊,容易造成索引失效、慢查询。

思考题

思考题 1

LIKE '王_'LIKE '王%'有什么区别?

答案LIKE '王_'匹配王后面刚好 1 个字符LIKE '王%'匹配王后面任意 0 个或多个字符

思考题 2

查出名字中包含 “六” 字的所有用户,写出 SQL。

答案

sql

SELECT * FROM user WHERE name LIKE '%六%';

思考题 3

查询 email 为空值 NULL 的用户,正确写法是什么?

答案

sql

SELECT * FROM user WHERE email IS NULL;
http://www.jsqmd.com/news/866472/

相关文章:

  • 从零基础到PPT大神,打造专业高颜值演示文稿
  • 沧州各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • LeagueAkari:英雄联盟玩家的智能工具箱完整指南
  • 添价收广州名表回收首选推荐:六家机构精准匹配,你的腕表该去哪家最划算 - 薛定谔的梨花猫
  • 终极风扇控制解决方案:如何用FanControl实现Windows系统精准温控
  • 曼德勃罗集的 Three.js 实现
  • NotebookLM P值不显示?3种隐藏调用方式+2个API绕过技巧,限时公开
  • 达梦数据创建备份文件脚本
  • 在多模型间灵活切换时Taotoken模型广场的选型体验
  • 莆田各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • 添价收领衔2026广州名表回收六强真机实测:五款腕表横评告诉你谁报价最高 - 薛定谔的梨花猫
  • DeepSeek开源生态已悄然覆盖83%国产芯片栈(昇腾/寒武纪/海光),但官方文档仍未披露的3个兼容补丁即将下线
  • SQL 排序分页精讲!ORDER BY+LIMIT 全套用法,报表分页
  • 为openclaw工具配置taotoken作为ai提供商的具体步骤与注意事项
  • 2026年RPA机器人解决方案选型指南:场景化落地适配
  • 威海各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • 【紧急修复】Perplexity同义词推荐突然失准?3分钟诊断清单+3个冷启动fallback方案(含Hugging Face最新patch)
  • 360浏览器隐私怎么清理?【图文讲解】360浏览器缓存清理?360浏览器上网痕迹清除?浏览器删除Cookie密码?共用电脑隐私清理?
  • AWS Security Agent 实战:全仓代码扫描 + 自动修复建议完整流程
  • 智慧渔业之鱼分类检测数据集 鱼类分类识别数据 鱼种类分类识别数据集 鱼识别数据集
  • # 2026年西藏旅游团家庭亲子推荐:线路适配与高原保障全解析 - 科技焦点
  • 独立开发者如何管理多个项目的API Key与访问权限
  • 外审员vs内审员具体做什么?需要什么能力? - 众智商学院职业教育
  • 为Claude Code配置Taotoken后端解决访问不稳定与Token不足问题
  • 宜昌各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • E.位运算-异或:2317. 操作后的最大异或和
  • 在stm32边缘计算场景中观测大模型api用量与成本控制
  • 宁德各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • 郴州各区房屋反复漏水真实原因解析:多数维修问题出在工艺匹配度 - 鲁顺
  • # 热门国产三维扫描仪推荐:2026年5大核心维度横向对比与避坑指南 - 科技焦点