MySQL IFNULL() 函数使用指南

MySQL IFNULL() 函数是一个 if-else 的函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。

IFNULL() 语法

这里是 MySQL IFNULL() 函数的语法:

IFNULL(expr1, expr2)

此函数相当于 IF()ISNULL() 函数的结合: IF(ISNULL(expr1), expr2, expr1)

参数

expr1
必需的。判断此表达式是否为 NULL
expr2
必需的。当 expr1NULL 时,返回 expr2

返回值

如果 expr1NULLIFNULL() 函数返回 expr1,否则返回 expr2

IFNULL() 示例

简单示例

SELECT
    IFNULL(NULL, 'It is NULL'),
    IFNULL('I am not NULL', 'I am NULL');
+----------------------------+--------------------------------------+
| IFNULL(NULL, 'It is NULL') | IFNULL('I am not NULL', 'I am NULL') |
+----------------------------+--------------------------------------+
| It is NULL                 | I am not NULL                        |
+----------------------------+--------------------------------------+

产生默认值

IFNULL() 函数可以在查询时用来生成一个列的默认值。

首先,我们创建一个表 test_ifnull 用于演示:

DROP TABLE IF EXISTS test_ifnull;
CREATE TABLE test_ifnull (
    col VARCHAR(50)
);

让我们插入几个数据:

INSERT INTO test_ifnull VALUES ('A'), ('B'), (NULL), ('D');

现在表中具有了如下数据:

+------+
| col  |
+------+
| A    |
| B    |
| NULL |
| D    |
+------+

我们知道其中一行的值为 NULL。如果我们想为值为 NULL 的列设置一个默认值 Nothing,请使用下面的语句:

SELECT
    col, IFNULL(col, 'Nothing') col_with_default
FROM
    test_ifnull;
+------+------------------+
| col  | col_with_default |
+------+------------------+
| A    | A                |
| B    | B                |
| NULL | Nothing          |
| D    | D                |
+------+------------------+

我们看到,含有 NULL 的行中的 col_with_default 列的内容变成了 Nothing