null有哪些常见的意思?(如何正确理解 SQL 中的 NULL)( 二 )


但如果把语句再改成下面这样呢?
复制代码
SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)数据库首先计算 1=NULL,它不知道 1 是否等于 NULL,因为它不知道 NULL 的值是什么 。
所以,这个计算不会返回 true,也不会返回 false,它会返回一个 NULL 。
接下来,NOT() 会继续解析上一个计算返回的结果 。
当 NOT() 遇到 NULL,它会生成另一个 NULL 。未知的相反面是另一个未知 。
所以,对于这两个查询:
复制代码
SELECT * FROM SOME_TABLEWHERE NOT(1 = NULL)和
复制代码
SELECT * FROM SOME_TABLEWHERE 1 = NULL都不会返回数据,尽管它们是完全相反的 。
NULL 和 NOT IN如果我有这样的一个查询语句:
复制代码
SELECT * FROM SOME_TABLEWHERE 1 IN (1, 2, 3, 4, NULL)很显然,WHERE 返回 true,这个语句将返回数据,因为 1 在括号列表里是存在的 。
但如果这么写:
复制代码
SELECT * FROM SOME_TABLEWHERE 1 NOT IN (1, 2, 3, 4, NULL)很显然,WHERE 返回 false,这个查询不会返回数据,因为 1 在括号列表里存在,但我们说的是“NOT IN” 。
但如果我们把语句改成这样呢?
复制代码
SELECT * FROM SOME_TABLEWHERE 5 NOT IN (1, 2, 3, 4, NULL)这里的 WHRE 不会返回数据,因为它的结果不是 true 。数字 5 在括号列表里可能不存在,也可能存在,因为当中有一个 NULL 值(数据库不知道 NULL 的值是什么) 。
这个 WHERE 会返回 NULL,所以整个查询不会返回任何数据 。
希望你们现在都清楚该怎么在 SQL 语句中处理 NULL 值了 。