首页/数据/SQL 速查/NULL 安全比较:<=> 与 IS DISTINCT FROM
本包目录(311 条)

NULL 安全比较:<=> 与 IS DISTINCT FROM

普通等号遇到 NULL 得 UNKNOWN,需要 NULL 安全相等时:MySQL 用 <=>,标准与 PostgreSQL 用 IS [NOT] DISTINCT FROM。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT NULL <=> NULL,   -- 1
       1    <=> NULL,   -- 0
       'a'  <=> 'a';   -- 1

PostgreSQL

PostgreSQL
SELECT NULL IS NOT DISTINCT FROM NULL;   -- true
SELECT 1    IS DISTINCT FROM NULL;       -- true
SELECT 1    IS DISTINCT FROM 1;          -- false
MySQLcol <=> value,结果恒为 0/1
标准/PGa IS NOT DISTINCT FROM b 判等;a IS DISTINCT FROM b 判不等
用途去重、版本比对、匹配可空的连接键

易错点

  • <=> 是 MySQL 方言,换库时要改写为 IS NOT DISTINCT FROM,不要直接照搬
  • 用 <=> 做连接条件会把 NULL 行互相匹配上,如果并非本意,先确认业务是否真的要 NULL=NULL

数据来源与参考

  • MySQL 8.0 Reference Manual · Comparison Functions and Operators
  • PostgreSQL Documentation · Comparison Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌