SQL编程思想:基于5种主流数据库代码实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人


5.1 三值逻辑

对于大多数编程语言而言,逻辑运算的结果只有两种情况:真(True)或者假(False)。但是在SQL中逻辑运算的结果存在三种情况:真、假或者未知(Unknown)。SQL中的三值逻辑如图5.1所示。

图5.1 SQL三值逻辑示意图

SQL引入三值逻辑主要是为了支持数据库中的空值,因为NULL表示未知数据。

SQL逻辑与(AND)运算符的真值表如表5.1所示。

表5.1 SQL逻辑与(AND)运算符的真值表

对于AND运算符,只有当两边的运算结果都为真时,最终结果才为真;否则,最终结果为假或者未知。

SQL逻辑或(OR)运算符的真值表如表5.2所示。

表5.2 SQL逻辑或(OR)运算符的真值表

对于OR运算符,只要两边的运算结果有一个为真,最终结果就为真;否则,最终结果为假或者未知。

SQL逻辑非(NOT)运算符的真值表如表5.3所示。

表5.3 SQL逻辑非(NOT)运算符的真值表

NOT运算符表示取反操作,对于未知取反的结果还是未知。

SQL语句中的WHERE、HAVING以及CASE表达式只返回逻辑运算结果为真的数据,不返回结果为假或未知的数据。这种三值逻辑可能导致的第一个问题就是空值的比较问题。