MariaDB NVL() 函数使用指南

在 MariaDB 中,NVL() 是一个内置函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。

NVL() 从 MariaDB 10.3 开始作为 IFNULL() 函数的同义词被引入,以兼容 Oracle。

MariaDB NVL() 语法

这里是 MariaDB NVL() 函数的语法:

NVL(expr1, expr2)

参数

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

返回值

如果 expr1 不为 NULLNVL() 函数返回 expr1,否则返回 expr2

MariaDB NVL() 示例

下面的示例展示了 MariaDB NVL() 函数的用法。

简单示例

SELECT NVL(NULL, 'It is NULL'),
    NVL('I am not NULL', 'I am NULL');

输出:

+-------------------------+-----------------------------------+
| NVL(NULL, 'It is NULL') | NVL('I am not NULL', 'I am NULL') |
+-------------------------+-----------------------------------+
| It is NULL              | I am not NULL                     |
+-------------------------+-----------------------------------+

产生默认值

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

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

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

让我们插入几个数据:

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

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

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

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

SELECT
    col, NVL(col, 'Nothing') col_with_default
FROM
    test_NVL;

输出:

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

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

结论

在 MariaDB 中,NVL() 是一个内置函数,如果第一个参数为 NULL,返回第二个参数,否则返回第一个参数。