IS NULL 是唯一可靠判断字段是否为 NULL 的方式,因 NULL 表示未知,不能用 = 或 != 比较;IS NOT NULL 仅排除 NULL,不保证内容有效;NULL、''、0、FALSE 语义完全不同,需严格区分。IS NULL 判断字段是否为 NULL 值IS NULL 是 SQL 中唯一可靠判断字段值是否为 NULL 的方式。因为 NULL 表示"未知",不是值,所以不能用 = 或 != 比较------column = NULL 永远返回 UNKNOWN(在 WHERE 中等价于 FALSE),查不到任何结果。用 WHERE column IS NULL 才能命中真正为 NULL 的行 WHERE column = '' 只匹配空字符串,和 NULL 完全无关 字符串、数字、日期字段都适用,语法一致,不因类型变化 在索引列上使用 IS NULL 通常能走索引(取决于数据库和索引定义,MySQL 5.7+、PostgreSQL、SQL Server 均支持) SELECT * FROM users WHERE email IS NULL;IS NOT NULL 排除 NULL 值但不等于"有内容"IS NOT NULL 筛出非 NULL 的行,但它不保证字段有意义:空字符串 ''、全空格、零值 0、默认时间 '0001-01-01' 都算"非 NULL",但业务上可能仍是无效数据。若需排除"空内容",得组合判断,比如:WHERE email IS NOT NULL AND TRIM(email) != '' NOT (column IS NULL) 语义等价,但可读性差,不推荐 某些 ORM(如 Django ORM)生成的 __isnull=False 底层就是 IS NOT NULL,要注意它不自动过滤空字符串 PostgreSQL 对 IS NOT NULL 优化较好;MySQL 在 MyISAM 引擎下对 IS NOT NULL 的索引使用略保守(InnoDB 无此问题)别把 NULL 和空字符串、零值混为一谈这是最常踩的坑:数据库里 NULL、''、0、FALSE 是四个独立状态,语义完全不同。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。
相关推荐
Shaoshing21 分钟前
ThreadLocal写后端的胖头鱼35 分钟前
一文详解CAS蜗牛互联网1 小时前
Python消费Responses SSE事件:增量文本、超时与取消statistican_ABin1 小时前
中国国际旅游发展分析报告—基于世界银行国际旅游数据的多维度分析青少儿编程课堂2 小时前
背包问题(0/1 背包与完全背包)解题精讲——动态规划入门Nturmoils2 小时前
GROUP BY 先别想当然,查汇总前把规则跑清楚code2cat2 小时前
【随笔】MCP工具注解的信任边界:四个提示如何参与调用决策慢云智慧空间2 小时前
从设备智能到空间理解,慢云科技如何重新定义智慧建筑浮链序2 小时前
用 Claude Haiku 5.5 做子智能体路由,把 Agent 成本砍掉六成冯一川2 小时前
安装Pyside 6