上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.2 空值判断条件
在数据库中,空值(NULL)是一个特殊值,表示缺失或者未知的数据。与其他编程语言(例如Java、C++)不同,在SQL语句中判断一个值是否为空,不能使用等于或者不等于运算符。例如,以下语句使用等于运算符查找没有上级领导(manager字段为空)的员工:
该查询没有返回任何结果。不过,员工表中确实存在这样的数据(“刘备”)。问题的原因在于,将一个数据与未知数据进行比较运算的结果未知,查询条件中的未知结果不会返回数据。
实际上,即使将两个未知数据进行比较,运算结果也是未知的。以下运算的结果均为未知:
0和空字符串都是已知数据,和未知数据的比较结果都是未知的。同样,我们既不能认为两个未知数据相等,也不能认为它们不相等。
为了实现空值的判断,SQL引入了两个特殊的运算符:IS NULL和IS NOT NULL,它们分别表示某个字段或者表达式的结果未知(空值)或者已知(非空)。因此,查找没有上级领导的员工应该使用以下判断条件:
如果员工的manager字段为空,就会返回相应的数据。查询返回的结果如下:
数据显示,“刘备”是公司的最高领导,因为他没有上级。
另外,IS NOT NULL运算符可以查找数据不为空的字段和表达式。例如,以下语句查找有奖金的员工:
查询返回的结果如下: