`
akunamotata
  • 浏览: 373878 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle NULL相关函数

    博客分类:
  • DB
阅读更多

主要有以下四个函数

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。

分享到:
评论
2 楼 akunamotata 2011-03-18  
xiaodatao 写道
楼主,有问题哟!
NVL2(N, A, B) 函数中,N为null时,取B的值,否则取A的值 ;


恩,的确,谢谢
1 楼 xiaodatao 2011-03-18  
楼主,有问题哟!
NVL2(N, A, B) 函数中,N为null时,取B的值,否则取A的值 ;

相关推荐

Global site tag (gtag.js) - Google Analytics