答案:查询MySQL非空字段需区分NULL与空字符串。使用IS NOT NULL排除NULL值;结合IS NOT NULL和!= ''或TRIM()排除NULL和空字符串;多字段用AND连接条件;可用IFNULL将NULL转为空字符串统一判断。

查询 MySQL 中不为空的字段,关键在于正确使用 IS NOT NULL 条件,并注意“空字符串”和“NULL”的区别。下面介绍几种常见情况及写法。
1. 查询字段不为 NULL
如果只想排除 NULL 值,使用 IS NOT NULL:SELECT * FROM table_name WHERE column_name IS NOT NULL;
这条语句会返回该字段不是 NULL 的所有记录,但包含空字符串 ''。2. 查询字段既不为 NULL 也不为空字符串
实际开发中,空字符串通常也被视为“无数据”。要同时排除 NULL 和 '',可以这样写:SELECT * FROM table_name WHERE column_name IS NOT NULL AND column_name != '';
或者用更简洁的方式:SELECT * FROM table_name WHERE TRIM(column_name) != '';
3. 多字段联合判断
如果想查多个字段都不为空的情况,可以用 AND 连接:SELECT * FROM table_name
WHERE name IS NOT NULL AND name != ''
AND email IS NOT NULL AND email != '';
4. 使用 IFNULL 或 COALESCE 简化判断(可选)
你可以用 IFNULL 把 NULL 转成空字符串再统一判断:SELECT * FROM table_name WHERE IFNULL(column_name, '') != '';
效果等同于同时排除 NULL 和空字符串。基本上就这些。关键是分清你所谓的“不为空”是指非 NULL,还是非空字符串,或是两者都要排除。根据业务需求选择合适写法即可。










