日期:2014-05-16  浏览次数:20448 次

Oracle nvl函数的理解

String queryString = " from TProject where nvl(submit,'no') = 'no' ";

NVL函数 :
nvl(submit,'no')的意思是 submit为空 取no? 不为空 去submit的值

nvl(submit,'no')='no'? 的意思是我个人是这样理解的 sumbit为空值时nvl函数 将 空值 转化为no 这样就能查到为空的记录了? sumbit不为空值 也不取submit 的值 将后面的='no'赋给submit,

这样 假如sumbit有三个值可选 yes? no? 和 空 那么 查询到的就是 除yes以外的所有记录

小测试:

CREATE TABLE TProject
(
??? ID NUMBER(4),
??? sub VARCHAR2(20)???
);
INSERT INTO TProject VALUES(1, 'yes');
INSERT INTO TProject VALUES(2, 'no');
INSERT INTO TProject VALUES(3, NULL);
测试结果:

ff

所以,选择是除了sub为yes的所有记录,包括为null的记录。

?