正 文

说一说“NULL”


www.7dspace.com  更新日期:2005-11-6 2:42:02  七度空间


2.空值和比较操作符

(1)IS[NOT]NULL:是用来测试空值的唯一操作符(见"空值的测试")。

(2)=、!=、>=、<=、>、<

SQL >select ename,sal,comm from emp where sal >comm;
ENAME            SAL      COMM
-- - -
ALLEN           1600       300
WARD            1250       500
TURNER          1500         0

sal或comm为空值的行,sal>comm比较结果为NULL,所以凡是sal或comm为空值的行都没有返回。

(3)IN和NOTIN操作符

SQL >select ename,mgr from emp where mgr in (7902,NULL);
ENAME            MGR
-- -
SMITH           7902

在上述语句中,条件"mgrin(7902,NULL)"等价于mgr=7902ormgr= NULL。对于表EMP中的任意一行,如果mgr为NULL,则上述条件等价于NULLORNULL,即为NULL;如果mgr为不等于7902的数值,则上述条件等价于FALSEORNULL,即为NULL;如果mgr等于7902,则上述条件等价于TRUEORNULL,即为TRUE。所以,最终结果能返回mgr等于7902的行。

SQL >select deptno from emp where deptno not in ('10',NULL);
no rows selected

在上述语句中,条件"deptnonotin('10',NULL)"等价于deptno!='10'anddeptno!=NULL,对于EMP表中的任意一行,条件的结果只能为NULL或FALSE,所以不返回行。

(4)any,some

SQL >select ename,sal from emp where sal > any(3000,null);
ENAME            SAL
-- -
KING            5000

条件"sal>any(3000,null)"等价于sal>3000 or sal>null。类似前述(3)第一句,最终结果返回所有sal>3000的行。

(5)All

SQL >select ename,sal from emp where sal > all(3000,null);
no rows selected

条件"sal>all(3000,null)"等价于sal>3000 and sal>null,结果只能为NULL或FALSE,所以不返回行。

(6)(not)between

SQL >select ename,sal from emp where sal between null and 3000;
no rows selected

条件"sal between null and 3000"等价于sal>=null and sal<=3000,结果只能为NULL或FALSE,所以不返回行。

SQL >select ename,sal from emp where sal not between null and 3000;
ENAME            SAL
-- -
KING            5000

条件"sal not between null and 3000"等价于sal 3000,类似前述(3)的第一句,结果返回sal>3000的行。

5页,页码:[1] [2] [3] [4] [5] 

上一篇:Oracle控制文件如何重建?
下一篇:商业门户站点的十二个关键特性
作者:  来源:网络整理 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐