IFNULL 判断是否为空

IFNULL 函数是 MySQL 控制流函数之一,它接受两个参数,如果不是 NULL,则返回第一个参数。 否则,IFNULL 函数返回第二个参数。两个参数可以是文字值或表达式。

语法说明

IFNULL(v1,v2)

如果 v1 不为 NULL,则 IFNULL 函数返回 v1;

如果 v1 为 NULL,则返回 v2;

示例用法

(1)验证 IFNULL 函数的第一个参数为 NULL 时,IFNULL 函数是如何进行处理的。如下:

mysql> select IFNULL(NULL, 'ARG2');
+----------------------+
| IFNULL(NULL, 'ARG2') |
+----------------------+
| ARG2                 |
+----------------------+
1 row in set (0.05 sec)

mysql> select IFNULL('ARG1', 'ARG2');
+------------------------+
| IFNULL('ARG1', 'ARG2') |
+------------------------+
| ARG1                   |
+------------------------+
1 row in set (0.06 sec)

由运行结果可知,如果 IFNULL 函数的第一个参数为 NULL,将返回第二个参数。如果第一个参数和第二个参数均不为NULL,则返回第一个参数。

(2)使用 IF 函数将 t_user 表中 name 字段为 NULL 的字段返回 “-”,age 字段为 NULL 的字段返回 0。其中,t_user 表有如下数据:

mysql> select * from t_user;
+----+------+-----+------+----------+
| id | name | sex | age  | salary   |
+----+------+-----+------+----------+
|  1 | 张三 | 男  |   22 | 6782.50  |
|  2 | 李四 | 男  |   27 | 7523.00  |
|  3 | 王五 | 女  |   22 | 6760.30  |
|  4 | 赵六 | 男  |   24 | 6810.50  |
|  5 | 王二 | 男  |   27 | 10280.00 |
|  6 | 杜一 | 女  |   25 | 8700.00  |
|  7 | NULL | 女  | NULL | 9750.00  |
+----+------+-----+------+----------+
7 rows in set (0.06 sec)

通过 IFNULL 函数分别处理 name 和 age 字段,如果 name 字段为 NULL,则返回 “-”;如果 age 字段为 NULL,则返回 0。如下:

mysql> select id, IFNULL(name, '-') as name, sex, IFNULL(age, 0) as age,salary from t_user;
+----+------+-----+-----+----------+
| id | name | sex | age | salary   |
+----+------+-----+-----+----------+
|  1 | 张三 | 男  |  22 | 6782.50  |
|  2 | 李四 | 男  |  27 | 7523.00  |
|  3 | 王五 | 女  |  22 | 6760.30  |
|  4 | 赵六 | 男  |  24 | 6810.50  |
|  5 | 王二 | 男  |  27 | 10280.00 |
|  6 | 杜一 | 女  |  25 | 8700.00  |
|  7 | -    | 女  |   0 | 9750.00  |
+----+------+-----+-----+----------+
7 rows in set (0.07 sec)

由运行结果可知,id 为 7 的记录中,name 和 age 均为 NULL。

通过 IFNULL(name, '-') 判断,如果 name 为 NULL,则返回 “-”。否则,直接返回 name 字段的值。

通过 IFNULL(age, 0) 判断,如果 age 为 NULL,则返回 0。否则,直接返回 age 字段的值。

关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号