上QQ阅读APP看书,第一时间看更新
6.2.4 空值检查
当创建一个表时,表的设计者可以指定单独的列是否可以包含空值,当一个列包含空值,它就被称作可包含NULL值。
新术语
NULL 空值,不同于可包含0、空字符串或者空格的字段。
为了确定一个值是否为NULL,你不能简单地检查是否“=NULL”。而是,SELECT语句有一个特殊的WHERE子句用于检测列是否有NULL值,即IS NULL子句。语法如下:
▼ 输入
这个语句返回没有价格(prod_price字段为空,不是价格为0)的所有产品的列表,并且由于该列没有空值,因此没有数据被返回。然而在customers表中,确实包含有NULL值的列——如果客户在文件中没有e-mail地址,cust_email列包含NULL值:
▼ 输入
▼ 输出
警告
NULL和不匹配 你可能会设想,当你筛选不包含指定值的行时,包含NULL值的行会返回,但它们不会。因为“未知”的特殊含义,数据库并不知道是否匹配,因此过滤匹配或不匹配时,它们都不会返回。
当过滤数据时,务必验证包含NULL列的行是否在返回的数据中。