MySQL中判断空值需区分NULL和空字符串:用IS NULL/IS NOT NULL判断NULL;用=''/!=''判断空字符串;统一处理二者用IS NULL OR =''或COALESCE(TRIM(col),'')!='';替换用IFNULL或COALESCE。

判断 MySQL 中的空值,关键要分清 NULL 和 空字符串('') —— 它们语义不同,写法和处理方式也完全不同。
用 IS NULL / IS NOT NULL 判断 NULL 值
这是唯一正确判断字段是否为 数据库意义上的“空”(即 NULL) 的方式。
-
查 NULL:
WHERE phone IS NULL—— 返回 phone 字段真正为 NULL 的记录 -
查非 NULL:
WHERE email IS NOT NULL—— 排除所有 email 是 NULL 的行 -
不能写
= NULL或!= NULL,因为 NULL 参与任何等值比较都返回 UNKNOWN,结果恒为 false,查不到数据
用 = '' / != '' 判断空字符串
空字符串('')是真实存在的、长度为 0 的字符串,不是 NULL。它需要单独判断。
本文档详细的讲述了hive函数;比较全面,希望对大家的学习会有帮助;感兴趣的朋友可以过来看看 目录 一、关系运算: 4 1. 等值比较: = 4 2. 不等值比较: 4 3. 小于比较: < 4 4. 小于等于比较: 5 6. 大于等于比较: >= 5 7. 空值判断: IS NULL 5 8. 非空判断: IS NOT NULL 6 9. LIKE比较: LIKE 6 10. JAVA的LIKE操作: RLIKE 6 11. REGEXP操作: REGEXP 7 二、数学运算: 7 1.
-
查空字符串:
WHERE name = '' -
查非空字符串(且非 NULL):
WHERE name != '' AND name IS NOT NULL—— 缺一不可,否则会漏掉 NULL 或 '' 的情况 - 常见误区:只写
name != '',会把 NULL 值也包含进来(因为 NULL != '' 仍为 UNKNOWN,不满足条件),但逻辑上你可能并不想让 NULL 被当作“非空”
同时判断 NULL 和空字符串
业务中常需把两者都视作“无效值”,统一过滤或替换。
-
查 NULL 或 '':
WHERE col IS NULL OR col = '' -
查既不 NULL 也不 '':
WHERE col IS NOT NULL AND col != '' - 更简洁写法(MySQL 特有):
WHERE COALESCE(TRIM(col), '') != '',可同时剔除 NULL、纯空格、空字符串
用 IFNULL 或 COALESCE 做空值替换
查询时不想看到 NULL,可用函数兜底,提升可读性或兼容性。
-
SELECT IFNULL(phone, '未填写') FROM users;—— phone 是 NULL 就显示“未填写” -
SELECT COALESCE(phone, mobile, '暂无联系方式') FROM users;—— 从左到右取第一个非 NULL 值 - 注意:
IFNULL只接受两个参数;COALESCE支持多个,更灵活









