<p>正确判断字段是否为空应使用IS NULL和IS NOT NULL。1. 查询字段为NULL时用“WHERE column_name IS NULL”,如“select * FROM users WHERE email IS NULL”;2. 查询字段不为空时用“IS NOT NULL”,如“age IS NOT NULL”;3. 不能用“=”或“!=”比较NULL,因NULL表示未知状态,比较结果始终为未知;4. 区分NULL与空字符串,需同时排除两者时应写“email IS NOT NULL AND email != ””。核心是始终使用IS NULL/IS NOT NULL进行判断。</p>

在 postgresql 中判断字段是否为空,主要通过 IS NULL 和 IS NOT NULL 来实现。空值(NULL)表示缺失或未知的数据,不能用等号(=)来判断。
1. 判断字段是否为 NULL
使用 IS NULL 检查字段是否为空:
SELECT * FROM table_name WHERE column_name IS NULL;
例如,查询 users 表中 email 为空的记录:
SELECT * FROM users WHERE email IS NULL;
2. 判断字段是否不为空
使用 IS NOT NULL 检查字段是否有值:
SELECT * FROM table_name WHERE column_name IS NOT NULL;
例如,查询 age 字段有值的用户:
SELECT * FROM users WHERE age IS NOT NULL;
3. 注意:不能用 = 或 != 判断 NULL
以下写法不会返回预期结果:
SELECT * FROM users WHERE email = NULL; — 错误
因为 NULL 不是一个值,而是一种状态,任何与 NULL 的比较都会返回“未知”。
4. 处理空字符串与 NULL 的区别
有时业务上需要同时排除 NULL 和空字符串:
SELECT * FROM users WHERE email IS NOT NULL AND email != ”;
这条语句确保 email 既不是 NULL,也不是空字符串。
基本上就这些。记住用 IS NULL / IS NOT NULL 是正确判断的关键。