SQL 函数中的空值指的是 SQL 函数的参数存在空值,当 SQL 函数的参数为空值时,大多数标量函数都返回 NULL,分析函数会忽略空值。您可以通过 NVL 函数的返回值确定空值。

NVL 函数中的空值

NVL 函数的表达式为 NVL(expr1,expr2),如果 expr1 不是 NULL,返回 expr1,否则返回 expr2

如下所示,给定 expr1 参数为 NULL,查询 NVL(expr1,0) 表达式的返回值。

执行以下语句:

  1. SELECT NVL(NULL,0) FROM DUAL;

查询结果如下:

  1. +-------------+
  2. | NVL(NULL,0) |
  3. +-------------+
  4. | 0 |
  5. +-------------+

expr1NULL,则表达式 NVL(expr1,0) 的返回值为 0;expr1 不是 NULL,则表达式的返回值为 expr1

分析函数中的空值

在使用 AVGMAXSUMCOUNT 等分析函数时,为 NULL 的纪录会被忽略。

如下所示,向 tbl_a 表中插入数据并执行以下语句:

  1. CREATE TABLE tbl_a (col_a varchar2(1), col_b int );
  2. INSERT INTO tbl_a VALUES (NULL, 3);
  3. INSERT INTO tbl_a VALUES (NULL, NULL);
  4. INSERT INTO tbl_a VALUES (NULL, 1);

执行以下语句:

  1. SELECT * FROM tbl_a;

查询结果如下:

  1. +-------+-------+
  2. | COL_A | COL_B |
  3. +-------+-------+
  4. | NULL | 3 |
  5. | NULL | NULL |
  6. | NULL | 1 |
  7. +-------+-------+

查询的结果如下:

  1. SELECT AVG(col_b) FROM tbl_a; -- 结果为 2
  2. SELECT MAX(col_b) FROM tbl_a; -- 结果为 3
  3. SELECT SUM(col_b) FROM tbl_a; -- 结果为 4
  4. SELECT COUNT(col_b) FROM tbl_a; -- 结果为 2
  5. SELECT COUNT(col_a) FROM tbl_a; -- 结果为 0
  6. SELECT COUNT(*) FROM tbl_a; -- 结果为 3

NULL 的纪录被忽略了。