Oracle LNNVL() 函数使用指南
Oracle LNNVL()
是一个内置函数,它为条件中的一个或两个操作数为空的情况提供了一种评估条件的简洁方法。如果条件为 TRUE
就返回 FALSE
。如果条件为 FALSE
或者 UNKNOWN
就返回 TRUE
。
LNNVL()
可以用在 WHERE
子句或者 CASE
表达式的 WHEN
条件中。
LNNVL()
可以在标量表达式可以出现的任何地方使用,特别是在 IS [NOT] NULL
、AND
或 OR
条件无效但需要考虑潜在空值的情况下。
Oracle LNNVL()
语法
这里是 Oracle LNNVL()
函数的语法:
LNNVL(condition)
参数
condition
-
必需的。 一个条件表达式。
返回值
Oracle LNNVL()
函数返回一个布尔值。如果 condition
条件为 TRUE
就返回 FALSE
。如果 condition
条件为 FALSE
或者 UNKNOWN
就返回 TRUE
。
Oracle LNNVL()
示例
这里有几个展示了 Oracle LNNVL()
函数用法的示例。
基本用法
这里使用 UNION
操作符构建临时数据:
SELECT 1 n FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
UNION ALL
SELECT NULL FROM dual;
输出:
N
_______
1
2
3
NULL
假设您想知道小于 3 的数字,包括 NULL。以下查询仅返回小于 3 的非 NULL
数字:
SELECT
*
FROM (
SELECT 1 n FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
UNION ALL
SELECT NULL FROM dual
) t
WHERE n < 3;
输出:
N
____
1
2
Oracle LNNVL()
函数可以帮您做到这一切:
SELECT
*
FROM (
SELECT 1 n FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
UNION ALL
SELECT NULL FROM dual
) t
WHERE LNNVL(n >= 3);
输出:
N
_______
1
2
NULL
下面的语句使用 CASE 表达式解释上面的语句是如何工作的:
SELECT
t.n,
CASE
WHEN LNNVL(t.n >= 3) THEN 'TRUE'
ELSE 'FALSE'
END Result
FROM (
SELECT 1 n FROM dual
UNION ALL
SELECT 2 FROM dual
UNION ALL
SELECT 3 FROM dual
UNION ALL
SELECT NULL FROM dual
) t;
输出:
N RESULT
_______ _________
1 TRUE
2 TRUE
3 FALSE
NULL TRUE
结论
Oracle LNNVL()
是一个内置函数,它为条件中的一个或两个操作数为空的情况提供了一种评估条件的简单方法。如果条件为 TRUE
就返回 FALSE
。如果条件为 FALSE
或者 UNKNOWN
就返回 TRUE
。