SQL中 IS NOT NULL 与 != NULL 的区别
在SQL中,NULL代表无值,与0、空字符串或仅仅字段包含空格不同。在使用WHERE语句搭配=,!=,>,<等这些操作符对数据进行过滤时,由于NULL具有特殊的含义,数据库不知道它们是否匹配,所以都不会返回为NULL的数据。所以=,!=等这些操作符只能与具有特定值的数据进行比较,所以即便有一些值NULL,使用= NULL 和 !=NULL都不会返回会这些为NULL的值,这是一种错误的写法。
如果我们想要获得值为NULL的数据,我们应该使用IS NULL
如果我们想要获得值不为NULL的数据,我们应该使用IS NOT NULL
假如有这样一个表
| id | value |
| ---- | ----- |
| 1 | 100 |
| 2 | 200 |
| 3 | NULL |
当我们想要对获取NULL值数据或者是过滤NULL数据时,如果我们按下面这样写
SELECT * from table WHERE value = NULL;
SELECT * from table WHERE value != NULL;
那么都没有结果返回。
只有当使用IS NULL,IS NOT NULL才能正确地对NULL值数据进行过滤。
SELECT * from table WHERE value IS NULL;
返回结果如下:
| id | value |
| ---- | ----- |
| 3 | NULL |
SELECT * from table WHERE value IS NOT NULL;
返回结果如下:
| id | value |
| ---- | ----- |
| 1 | 100 |
| 2 | 200 |
在SQL中,NULL代表无值,与0、空字符串或仅仅字段包含空格不同。在使用WHERE语句搭配=,!=,>,<等这些操作符对数据进行过滤时,由于NULL具有特殊的含义,数据库不知道它们是否匹配,所以都不会返回为NULL的数据。所以=,!=等这些操作符只能与具有特定值的数据进行比较,所以即便有一些值NULL,使用= NULL 和 !=NULL都不会返回会这些为NULL的值,这是一种错误的写法。
如果我们想要获得值为NULL的数据,我们应该使用IS NULL
如果我们想要获得值不为NULL的数据,我们应该使用IS NOT NULL
假如有这样一个表
| id | value |
| ---- | ----- |
| 1 | 100 |
| 2 | 200 |
| 3 | NULL |
当我们想要对获取NULL值数据或者是过滤NULL数据时,如果我们按下面这样写
SELECT * from table WHERE value = NULL;
SELECT * from table WHERE value != NULL;
那么都没有结果返回。
只有当使用IS NULL,IS NOT NULL才能正确地对NULL值数据进行过滤。
SELECT * from table WHERE value IS NULL;
返回结果如下:
| id | value |
| ---- | ----- |
| 3 | NULL |
SELECT * from table WHERE value IS NOT NULL;
返回结果如下:
| id | value |
| ---- | ----- |
| 1 | 100 |
| 2 | 200 |
展开
12
14