SQL 之 SQL server 中 遇到字段的值为null 遇到的坑

   SQL server 中,如果查询或筛选的条件中,某字段的值为NULL,如何处理?又有哪些坑需要避免呢?  


直接上坑 😃:

  1. NULL 与其他任何类型进行逻辑判断:
    【解释】:

    • NULL表示值未知,和空字符(空白)和0 不一样;
    • NULL和NULL或其他任何值做逻辑判断的时候,返回的值都是UNKNOWN;
  2. NULL 在in 或 not in 语句中,比如where classNum in (null,1), 或 where classNum not in (1,2)where classNum not in (1,2,null)

    • where classNum in (null,1) 是无法筛选出null的结果,但不会报错;
    • where classNum not in (1,2),就算表中包含 classNum is null的记录,但是同样也不会筛选出来
      where classNum not in (1,2,null),不会报错,但是不会查出来任何结果,如果in语句里面是一个子查询,要避免查出来是null的结果,否则整个查询是没有结果的
  3. 在where中查询为NULL的结果,= NULL(这个应该是一般人不会犯的错 😉:
    【解释】:

    • = NULL 这样查询不会报错,但是不会查出任何结果;
    • NULL 只是一个表示“没有值”的标记

正确使用方法:

  1. 若要在查询中测试空值,请在 WHERE 子句中使用 IS NULL 或 IS NOT NULL。
  2. 在 SQL 中存在第三个逻辑值:unknown。这有点类似于我们平时所说的:对、错、不知道:
    • 逻辑值有 true, false, unknown:
      image
      AND 的情况:false > unknown > true
      OR 的情况:true > unknown > false

    • 与and和or运算符的逻辑运算结果:
      image

参考链接:
posted @ 2022-06-10 17:49  77工作室  阅读(1556)  评论(0编辑  收藏  举报