LNNVL 函数判断条件中的一个或者两个操作数是否为 NULL。该函数可以在 WHERE 子句中使用,也可以作为 CASE 表达式中的 WHEN 条件。将条件作为参数,如果条件为 FALSEUNKNOWN,则返回 TRUE;如果条件为 TRUE,则返回 FALSE

语法

  1. LNNVL(condition)

参数

参数说明
condition条件

假设 a = 2,b 值为 NULL,下表显示了 LNNVL 函数的返回值。

条件条件判断结果LNNVL 返回值
a = 1FALSETRUE
a = 2TRUEFALSE
a IS NULLFALSETRUE
b = 1UNKNOWNTRUE
b IS NULLTRUEFALSE
a = bUNKNOWNTRUE

返回类型

返回布尔型 TRUEFALSE

示例

假设有一张表 EMPLOYEES,给员工姓名列 name 和佣金列 commission_pct 里面插入数据,执行以下语句:

  1. CREATE TABLE EMPLOYEES (name VARCHAR(20), commission_pct numeric);
  2. INSERT INTO EMPLOYEEs VALUES ('Baer', null);
  3. INSERT INTO EMPLOYEEs VALUES ('Bada', null);
  4. INSERT INTO EMPLOYEEs VALUES ('Boll', 0.1);
  5. INSERT INTO EMPLOYEEs VALUES ('Bates', 0.15);
  6. INSERT INTO EMPLOYEEs VALUES ('Eros', null);
  7. INSERT INTO EMPLOYEEs VALUES ('Girl', 0.25);

您想知道佣金率低于 20% 的员工人数,包括没有收到佣金的员工。执行以下语句,您只能查询实际获得佣金低于 20% 的员工人数:

  1. SELECT COUNT(*) FROM employees WHERE commission_pct < .2;

查询结果如下:

  1. +------------+
  2. | COUNT(*) |
  3. +------------+
  4. | 2 |
  5. +------------+

要包括没有收到佣金的另外 3 名员工,您需要使用 INNVL 函数重写查询。执行以下语句:

  1. SELECT COUNT(*) FROM employees WHERE LNNVL(commission_pct >= .2);

查询结果如下:

  1. +------------+
  2. | COUNT(*) |
  3. +------------+
  4. | 4 |
  5. +------------+