MySQL NULL 值处理

我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

  • IS NULL: 当列的值是 NULL,此运算符返回 true。

  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。

  • <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。

在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。

MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。

注意:

select * , columnName1+ifnull(columnName2,0) from tableName;

columnName1,columnName2 为 int 型,当 columnName2 中,有值为 null 时,columnName1+columnName2=null, ifnull(columnName2,0) 把 columnName2 中 null 值转为 0。


在命令提示符中使用 NULL 值

以下实例中假设数据库 iecz 中的表 iecz_test_tbl 含有两列 iecz_author 和 iecz_count,   iecz_count 中设置插入NULL值。

实例

尝试以下实例:

创建数据表 iecz_test_tbl

root@host# mysql -u root -p password;Enter password:*******mysql> use iecz;Database changedmysql> create table iecz_test_tbl    -> (    -> iecz_author varchar(40) NOT NULL,    -> iecz_count  INT    -> );Query OK, 0 rows affected (0.05 sec)mysql> INSERT INTO iecz_test_tbl (iecz_author, iecz_count) values ('iecz', 20);mysql> INSERT INTO iecz_test_tbl (iecz_author, iecz_count) values ('程序员册子教程', NULL);mysql> INSERT INTO iecz_test_tbl (iecz_author, iecz_count) values ('Google', NULL);mysql> INSERT INTO iecz_test_tbl (iecz_author, iecz_count) values ('FK', 20); mysql> SELECT * from iecz_test_tbl;+---------------+--------------+| iecz_author | iecz_count |+---------------+--------------+| iecz        | 20           || 程序员册子教程  | NULL         || Google        | NULL         || FK            | 20           |+---------------+--------------+4 rows in set (0.01 sec)