MySQL 处理 null 值的问题

古城微笑少年丶 2022-11-03 00:44 115阅读 0赞

MySQL中NULL值比较

  • IS NULL: 当列的值是 NULL,此运算符返回 true
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true
  • <=>: 安全的等于,比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
  1. MySQL中NULL是不参与计算的,对NULL进行计算,使用 IS NULL 和 IS NOT NULL 运算符
  2. 只有 “<=>” 才支持NULL的比较,其他比较运算对有NULL操作数时返回的结果就是NULL,永远返回false,即 NULL = NULL 返回false

使用not in 包含null值的问题

结论:如果在 not in 子查询中有 null 值的时候则不会返回数据,即查询结果为空,所有的运算结果都是false,所以要避免not in的list中出现null的情况

  1. mysql> select 1 not in (1,2,3);
  2. +------------------+
  3. | 1 not in (1,2,3) |
  4. +------------------+
  5. | 0 |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8. mysql> select 1 not in (1,2,3,null);
  9. +-----------------------+
  10. | 1 not in (1,2,3,null) |
  11. +-----------------------+
  12. | 0 |
  13. +-----------------------+
  14. 1 row in set (0.00 sec
  15. mysql> select 1 not in (2,3);
  16. +----------------+
  17. | 1 not in (2,3) |
  18. +----------------+
  19. | 1 |
  20. +----------------+
  21. 1 row in set (0.00 sec)
  22. mysql> select 1 not in (2,3,null);
  23. +---------------------+
  24. | 1 not in (2,3,null) |
  25. +---------------------+
  26. | NULL |
  27. +---------------------+
  28. 1 row in set (0.00 sec)

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读