如何判断空值_mysql is null判断

3次阅读

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

如何判断空值_mysql is null 判断

判断 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。它需要单独判断。

  • 查空字符串: 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 支持多个,更灵活
站长
版权声明:本站原创文章,由 站长 2025-12-24发表,共计971字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources