- MariaDB必知必会
- (美)Ben Forta
- 362字
- 2021-04-04 15:50:48
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=1739390782-w6jYeXIVOiPJRemmYxLNXPVBqtkTShfO-0-1c471bdfa0605c62529149638d145470)
这个语句返回没有价格(prod_price字段为空,不是价格为0)的所有产品的列表,并且由于该列没有空值,因此没有数据被返回。然而在customers表中,确实包含有NULL值的列——如果客户在文件中没有e-mail地址,cust_email列包含NULL值:
▼ 输入
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/34b-i.jpg?sign=1739390782-G07nXcMeOfGeQYghRDfCSPq7BiS3lgDw-0-eb272bdc3fc143ac710161c26047f572)
▼ 输出
![](https://epubservercos.yuewen.com/AE5E39/18365861508119506/epubprivate/OEBPS/Images/34c-i.jpg?sign=1739390782-XpcIXOg6VLqW3q2sqlJVN3GigLlDWWH2-0-78cde05685f1728309b32bd68c4a725c)
警告
NULL和不匹配 你可能会设想,当你筛选不包含指定值的行时,包含NULL值的行会返回,但它们不会。因为“未知”的特殊含义,数据库并不知道是否匹配,因此过滤匹配或不匹配时,它们都不会返回。
当过滤数据时,务必验证包含NULL列的行是否在返回的数据中。