在数据表中,某些列的值可能为空值(NULL),空值不同于0,也不同于空字符串。
在 MySQL 中,使用 IS NULL 关键字来判断字段的值是否为空值,其语法格式如下所示:
SELECT * |字段名 1,字段名 2,...
FROM 表名
WHERE 字段名 IS [NOT] NULL
在上面的语法格式中,“NOT”是可选参数,使用 NOT 关键字用于判断字段不是空值。
例如,查询 student 表中 gender 为空值的记录,SQL 语句如下所示:
SELECT id, name, grade,gender FROM student WHERE gender IS NULL;
执行结果如下所示:
mysql> SELECT id, name, grade,gender FROM student WHERE gender IS NULL;
+----+---------+-------+--------+
| id | name | grade | gender |
+----+---------+-------+--------+
| 8 | yanging | 90 | NULL |
+----+---------+-------+--------+
1 row in set (0.01 sec)
从查询结果可以看到 gender 字段为空值,满足查询条件。在关键字 IS 和 NULL 之间可以使用 NOT 关键字,用来查询字段不为空值的记录接下来通过具体的案例来演示。
例如,査询 student 表中 gender 不为空值的记录,SQL 语句如下所示:
SELECT id, name, grade,gender FROM student WHERE gender IS NOT NULL;
执行结果如下所示:
mysql> SELECT id, name, grade,gender FROM student WHERE gender IS NOT NULL;
+----+------------+-------+--------+
| id | name | grade | gender |
+----+------------+-------+--------+
| 1 | songjiang | 40 | 男 |
| 2 | wuyong | 100 | 男 |
| 3 | ginming | 90 | 男 |
| 4 | husanniang | 88 | 女 |
| 5 | sunerniang | 66 | 女 |
| 6 | wusong | 86 | 男 |
| 7 | linchong | 92 | 男 |
+----+------------+-------+--------+
7 rows in set (0.00 sec)
从查询结果可以看到,所有记录的 gender 字段值都不为空值。