大多数编程语言都是基于二值逻辑的,既逻辑值只有真和假两个,而sql语言则采用一种特别的逻辑体系,三值逻辑,既逻辑值除了真和假还有第三个值不确定,三值逻辑会带来一些意想不到的惊喜,所谓惊喜既烦恼。总之数据库里只要存在一个null,查询的结果就可能不确定,而且一般没有办法确定具体是哪个查询返回了不正确的结果,所以所有的结果看起来都很可疑,没有谁能保一定从包含null的数据库里查询出正确的结果。
我们在想一个问题,数据库为什么会出现三值逻辑,大多数编程语言都包括布尔型bool,boolean,
当然,sql语言里也有,sql-99里将布尔 型定义为可以由用户直接操作的数据类型。此外,在where子句等地方进行条件判断时也经常会用到布尔型的运算。然而,大家知道普通编程语言里的布尔型和sql语言里的布尔型之间有什么区别吗?普通语言里的布尔型只有true和fasle两个值,这种逻辑体系被称为二值逻辑,而sql语言里,除此之外还有第三个值,unknow,因此这种逻辑体系被称为三值逻辑。