我们已经看到SQL SELECT命令和WHERE子句一起使用,来从MySQL表中提取数据,
但是,当我们试图给出一个条件,比较字段或列值设置为NULL,它确不能正常工作。
为了处理这种情况,MySQL提供了三大运算符
IS NULL: 如果列的值为NULL,运算结果返回 true
IS NOT NULL: 如果列的值不为NULL,运算结果返回 true
<=>: 运算符比较值,(不同于=运算符)即使两个空值它返回 true
涉及NULL的条件是特殊的。不能使用= NULL或!= NULL来匹配查找列的NULL值。
这样的比较总是失败,因为它是不可能告诉它们是否是true。 甚至 NULL = NULL 也是失败的。
要查找列的值是或不是NULL,使用IS NULL或IS NOT NULL。
要查找记录中,其中 tutorial_count 列的值是或不是NULL,查询应该这样写:
mysql> SELECT * FROM tcount_tbl
-> WHERE tutorial_count IS NULL;
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
| mahnaz | NULL |
| Jen | NULL |
+-----------------+----------------+
rows in set (0.00 sec)
mysql> SELECT * from tcount_tbl
-> WHERE tutorial_count IS NOT NULL;
+-----------------+----------------+
| tutorial_author | tutorial_count |
+-----------------+----------------+
|
|
+-----------------+----------------+
rows in set (0.00 sec)