![MariaDB必知必会](https://wfqqreader-1252317822.image.myqcloud.com/cover/943/34339943/b_34339943.jpg)
上QQ阅读APP看书,第一时间看更新
6.2.4 空值检查
当创建一个表时,表的设计者可以指定单独的列是否可以包含空值,当一个列包含空值,它就被称作可包含NULL值。
新术语
NULL 空值,不同于可包含0、空字符串或者空格的字段。
为了确定一个值是否为NULL,你不能简单地检查是否“=NULL”。而是,SELECT语句有一个特殊的WHERE子句用于检测列是否有NULL值,即IS NULL子句。语法如下:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/34a-i.jpg?sign=1739395025-cDZJhMmkj0RWEf42zxxl2qtOps3Px33m-0-ec09a9b12c1f7d2c4dcd012ec6f3e2c9)
这个语句返回没有价格(prod_price字段为空,不是价格为0)的所有产品的列表,并且由于该列没有空值,因此没有数据被返回。然而在customers表中,确实包含有NULL值的列——如果客户在文件中没有e-mail地址,cust_email列包含NULL值:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/34b-i.jpg?sign=1739395025-ApSGUYrZt0N17bAWV1l1ZKFgfm3Dva5B-0-baa84e72d8516dfb939a882e0501fead)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/34c-i.jpg?sign=1739395025-AorgqOoqlL0QfTfyeMGMFah3LgdNcmOK-0-1a23af659887edfac4305bcc19c12b01)
警告
NULL和不匹配 你可能会设想,当你筛选不包含指定值的行时,包含NULL值的行会返回,但它们不会。因为“未知”的特殊含义,数据库并不知道是否匹配,因此过滤匹配或不匹配时,它们都不会返回。
当过滤数据时,务必验证包含NULL列的行是否在返回的数据中。