#LNNVL
LNNVL函数用于计算条件,尤其适用于计算存在操作数为NULL的条件。
该函数通常在WHERE语句中使用,也可以作为搜索表达式中的条件,在这类语句中,普通的条件判断对NULL操作数返回false或者未知,从而导致空数据被过滤,使用LNNVL函数则可以解决这个问题,减少用户还需进行IS NULL判断的操作处理。
condition
YashanDB支持的条件语句,具体参考通用SQL语法condition。
当condition的结果为false或者未知时,函数返回true;当condition的结果为true时,函数返回false。
示例
--LNNVL函数使用效果
SELECT LNNVL(1 IN (2,3)) res FROM DUAL;
RES
--------------------
true
SELECT LNNVL('' IS NOT NULL) res FROM DUAL;
RES
--------------------
true
--普通条件对NULL判断返回false,从而过滤掉空数据
--area1表共有5条数据,EMPLOYEE_COUNT为空的业务含义为0
SELECT * FROM area1;
AREA_NO AREA_NAME DHQ EMPLOYEE_COUNT
------- ------------------------ --------------------- --------------
01 华东 Shanghai
02 华西 Chengdu 300
03 华南 Guangzhou 400
04 华北 Beijing 300
05 华中 Wuhan
--当统计EMPLOYEE_COUNT值小于400的区域数时,由于空值被过滤导致结果与实际业务不符,除非还进行IS NULL判断
SELECT COUNT(1) res FROM area1 WHERE employee_count<400;
RES
---------------------
2
SELECT COUNT(1) res FROM area1 WHERE employee_count<400 OR employee_count IS NULL;
RES
---------------------
4
--使用LNNVL函数可以替代上条语句
SELECT COUNT(1) res FROM area1 WHERE LNNVL(employee_count>=400);
RES
---------------------
4