Oracle NULL相关函数

主要有以下四个函数

NVL(N, M) N为null的情况下,取M的值,否则取N的值
NVL2(N, A, B) N为null时,取A的值,否则取B的值 (纠正,N为null时,取B的值,否则取A的值)

NULLIF(M, N) 如果 M 和 N 相等,返回 NULL,否则返回 M。
COALESCE(A1, ……,AN ) 返回第一个不为NULL的值。

 

用以下SQL建表。 

CREATE TABLE test(
    a1 varchar2(10),
    a2 varchar2(10),
    a3 varchar2(10)
);
INSERT INTO test(a1, a2, a3) VALUES(NULL, NULL, 'ccc111');
INSERT INTO test(a1, a2, a3) VALUES(NULL, 'bbb222', 'ccc222');
INSERT INTO test(a1, a2, a3) VALUES('aaa333', 'ccc333', 'ccc333');

 测试: 

SELECT 
    nvl(a1, a2),
    nvl2(a1, a2, a3),
    nullif(a1, a2) ,
    coalesce(a1, a2, a3)
FROM test

结果:

NVL(A1,A2) NVL2(A1,A2,A3) NULLIF(A2,A3) COALESCE(A1,A2,A3)
---------- -------------- ------------- ------------------
           ccc111                       ccc111
bbb222     ccc222         bbb222        bbb222
aaa333     ccc333                       aaa333

 其中要注意的是:NULLIF(M, N) 如果M和N有一个为NULL时,返回NULL。

你可能感兴趣的:(oracle,sql)