LNNVL
函数判断条件中的一个或者两个操作数是否为 NULL
。该函数可以在 WHERE
子句中使用,也可以作为 CASE
表达式中的 WHEN
条件。将条件作为参数,如果条件为 FALSE
或 UNKNOWN
,则返回 TRUE
;如果条件为 TRUE
,则返回 FALSE
。
语法
LNNVL(condition)
参数
参数 | 说明 |
condition | 条件 |
假设 a = 2,b 值为 NULL,下表显示了 LNNVL
函数的返回值。
条件 | 条件判断结果 | LNNVL 返回值 |
a = 1 | FALSE | TRUE |
a = 2 | TRUE | FALSE |
a IS NULL | FALSE | TRUE |
b = 1 | UNKNOWN | TRUE |
b IS NULL | TRUE | FALSE |
a = b | UNKNOWN | TRUE |
返回类型
返回布尔型 TRUE
或 FALSE
。
示例
假设有一张表 EMPLOYEES,给员工姓名列 name 和佣金列 commission_pct 里面插入数据,执行以下语句:
CREATE TABLE EMPLOYEES (name VARCHAR(20), commission_pct numeric);
INSERT INTO EMPLOYEEs VALUES ('Baer', null);
INSERT INTO EMPLOYEEs VALUES ('Bada', null);
INSERT INTO EMPLOYEEs VALUES ('Boll', 0.1);
INSERT INTO EMPLOYEEs VALUES ('Bates', 0.15);
INSERT INTO EMPLOYEEs VALUES ('Eros', null);
INSERT INTO EMPLOYEEs VALUES ('Girl', 0.25);
您想知道佣金率低于 20% 的员工人数,包括没有收到佣金的员工。执行以下语句,您只能查询实际获得佣金低于 20% 的员工人数:
SELECT COUNT(*) FROM employees WHERE commission_pct < .2;
查询结果如下:
+------------+
| COUNT(*) |
+------------+
| 2 |
+------------+
要包括没有收到佣金的另外 3 名员工,您需要使用 INNVL
函数重写查询。执行以下语句:
SELECT COUNT(*) FROM employees WHERE LNNVL(commission_pct >= .2);
查询结果如下:
+------------+
| COUNT(*) |
+------------+
| 4 |
+------------+