主要实验了几个常用的判断NULL及DECODE的函数。 1.NVL(a,b):判断A字段的内容为null时,运算结果为指定的。A不为NULL,则显示A的。 如果COMM的为NULL,则返回显示为200. BYS@bys1Select COMM,NVL(COMM,200) From EMP where rownum3; COMM NVL(COMM,200) ------
主要实验了几个常用的判断NULL值及DECODE的函数。
如下语句是,如果COMM是空,则显示MGR。如果COMM也为空,则显示EMPNO。如果EMPNO也为空,则显示886.
KING的COMM是NULL值,MGR也是NULL,所以返回显示了工号7839。
SMITH的COMM是NULL值,MGR为值,所以返回显示了MGR的号码:7902
MILLER 7934 7782 7782
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
如下两条语句,decode(5,1,'ok',2)中,如5等于1,返回OK。不等于1,返回2
BYS@bys1>select decode(5,1,'ok',2) from dual;
D
-
2
BYS@bys1>select decode(1,1,'ok',2) from dual;
DE
--
ok
如下的表:decode(xx,9,1,0),即XX行的值为9,则显示1,不为9,则显示0.
BYS@bys1>select * from aa;
XX
----------
9
5
5
9
5
9
9
7 rows selected.
BYS@bys1>select decode(xx,9,1,0),decode(xx,5,1,0) from aa;
DECODE(XX,9,1,0) DECODE(XX,5,1,0)
---------------- ----------------
1 0
0 1
0 1
1 0
0 1
1 0
可用于统计等于某个数值的列总共有多少行。分组函数不统计NULL值
BYS@bys1>select count(decode(xx,9,1,null)),count(decode(xx,5,1,0)) from aa;
COUNT(DECODE(XX,9,1,NULL)) COUNT(DECODE(XX,5,1,0))
-------------------------- -----------------------
4 7