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