![879629d5d86c71ab6a97b27547c11dea.png](https://i-blog.csdnimg.cn/blog_migrate/17fec95199c535ee0032af956176e86d.jpeg)
本资料为产品岗位作为日常工作参考,语言口语化
At 2019/4/27 By David.Yang
介绍什么是IS NULL
IS NULL作为一种运算符,用来对数据表中的NULL值数据进行过滤。
语法
target IS NULL
target值为NULL,则表达式返回TRUE,否则返回FALSE。
MYSQL中没有BOOLEAN类型,
使用TINYINT(1)表示BOOLEAN,
1 = TRUE, 0 = FALSE。
IS NULL和大于、小于等一样都是比较运算符,可以在SELECT WHERE等出使用它。
示例:
SELECT 1 IS NULL, # 0
0 IS NULL, # 0
NULL IS NULL; # 1
![57b0faa8565301f432308d09e4ca4572.png](https://i-blog.csdnimg.cn/blog_migrate/874b2c2310c9464216bfb71cf03667dd.jpeg)
IS NOT NULL
表示对值进行非NULL的确定
target IS NOT NULL
target不值为NULL,则表达式返回TRUE,否则返回FALSE。
SELECT 1 IS NOT NULL, #-- 1
0 IS NOT NULL, #-- 1
NULL IS NOT NULL; #-- 0;
![071130d2c0aafc9d35d17d1a52a78ba2.png](https://i-blog.csdnimg.cn/blog_migrate/591f4baa6a1d2dc865f19d911d623e4f.jpeg)
数据表演示IS NULL
过滤出学生表当中,国籍为NULL学生
SQL
SELECT
*
FROM
students
WHERE
nationality IS NULL;
![dc86f2ffb09b094b534f988d451794ff.png](https://i-blog.csdnimg.cn/blog_migrate/46cd2ae8fe507a65b2cb74188680de04.png)
那IS NOT NULL呢?
SQL
SELECT
COUNT(*)
FROM
students
WHERE
nationality IS NOT NULL;
通过COUNT()统计有27个学生都有国籍
![4c73816ff3966a3f745574561275b5b2.png](https://i-blog.csdnimg.cn/blog_migrate/b57bc03ace09517cd60febfaec146c04.jpeg)
IS NULL能过滤字符串空么?
![8e09ec5766e910500aee000ff265dbed.png](https://i-blog.csdnimg.cn/blog_migrate/f140a4b18ab2e6dca28c5cbf26fcb39e.png)
我们构造了几条测试数据,他们的地址字段有几种类型:
FALSE字符串
0
空字符串
以及NULL
我们再来使用IS NULL过滤
SQL
SELECT
*
FROM
students
WHERE
address IS NULL;
![86e5bf67223da8db89fc4f7aa5d1085d.png](https://i-blog.csdnimg.cn/blog_migrate/ff0166014c8cac845255264c9f784c98.png)
结果只能查询出NULL的记录,
所以需要注意,IS NULL不能对其他的空类型进行过滤。
补充
IS NULL可以和其他条件通过OR拼接
SELECT
*
FROM
students
WHERE
nationality = '南宋'
OR
nationality IS NULL;