SQL语句——06、NULL处理

Null是一个很特别的值,既不是0也不是空格.它的值是没有定义,不确定的未知值。

Null值的运算

AND运算表

True and NULL is NULL
False and NULL = False
NULL and NULL is NULL

OR运算表

True or NULL = True
False or NULL IS NULL
NULL OR NULL IS NULL

IN运算

select sal from emp where sal not in(800,null);
相当于:
select sal from emp where sal!=800 and sal!=null;
所以in中不要有null
 

计算

NULL值为未知不可以参与计算。如果要做运算,可以用NVL、NVL2、NVLIF函数先置为0

NVL(表达式1,表达式2)

如果表达式1是NULL,则返回表达式2
如果表达式1非NULL,则返回表达式1
表达式1和表达式2可以是数字,字符串,日期格式,1和2的数据类型必须一致
 
SQL> select ename,job,sal,comm,sal+NVL(comm,0) from emp where ename in ('SMITH','WARD');

ENAME       JOB           SAL       COMM    SAL+NVL(COMM,0)
---------- --------- ---------- ---------- ---------------
SMITH      CLERK         800                       800
WARD     SALESMAN        1250       500            1750

NVL2(expr1,expr2,expr3)

如果expr1为空,则返回expr3,否则返回expr2
 
SQL> select ename,job,sal,comm,sal+NVL2(comm,comm,0) from emp where ename in ('SMITH','WARD');

ENAME         JOB        SAL       COMM    SAL+NVL2(COMM,COMM,0)
---------- --------- ---------- ---------- ---------------------
SMITH        CLERK      800                     800
WARD       SALESMAN     1250        500         1750

NULLIF(expr1,expr2)

如果expr1和expr2相同,则返回空,否则返回expr1
SQL> select ename,NULLIF(ename,'KING') from emp where ename in ('SCOTT','KING');

ENAME       NULLIF(ENA
---------- ----------
SCOTT       SCOTT
KING

COALESCE(expr1,expr2,expr3,...)

返回第一个非空的表达式
SQL> select coalesce('','a','','b') from dual;

C
-
a

SQL> select coalesce('','','','b') from dual;

C
-
b

猜你喜欢

转载自www.cnblogs.com/marxist/p/11762392.html
今日推荐