主要有以下四个函数
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。