SQL 之 SQL server 中 遇到字段的值为null 遇到的坑
SQL server 中,如果查询或筛选的条件中,某字段的值为NULL,如何处理?又有哪些坑需要避免呢?
直接上坑 😃:
-
NULL 与其他任何类型进行逻辑判断:
【解释】:- NULL表示值未知,和空字符(空白)和0 不一样;
- NULL和NULL或其他任何值做逻辑判断的时候,返回的值都是UNKNOWN;
-
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的结果,否则整个查询是没有结果的
-
在where中查询为NULL的结果,
= NULL
(这个应该是一般人不会犯的错 😉:
【解释】:= NULL
这样查询不会报错,但是不会查出任何结果;- NULL 只是一个表示“没有值”的标记
正确使用方法:
- 若要在查询中测试空值,请在 WHERE 子句中使用 IS NULL 或 IS NOT NULL。
- 在 SQL 中存在第三个逻辑值:unknown。这有点类似于我们平时所说的:对、错、不知道:
-
逻辑值有 true, false, unknown:
AND 的情况:false > unknown > true
OR 的情况:true > unknown > false -
与and和or运算符的逻辑运算结果:
-
参考链接:
本文来自博客园,作者:77工作室,转载请注明原文链接:https://www.cnblogs.com/z7luv/p/16363980.html
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。