如何根据非null条件从表中获取3个字段值

时间:2015-07-06 13:09:18

标签: sql oracle oracle11g oracle10g

我在表TABLE中有3个字段a,b,c(至少一个字段不为空)。对于记录,我必须以格式"来获取a,b,c。 a或b或c"如果a,b,c不为空且" a或b"如果c为null,只有c,如果a和b为null。请帮我查询

1 个答案:

答案 0 :(得分:0)

SELECT nvl2(a, a||' or ', '')||nvl2(b, b||' or ', '')||nvl2(c, c, '')
 FROM ( -- casos de uso
--      select NULL        a, NULL        b, NULL        c from dual union all
        select NULL        a, NULL        b, 'no-nulo-c' c from dual union all
        select NULL        a, 'no-nulo-b' b, NULL        c from dual union all
        select NULL        a, 'no-nulo-b' b, 'no-nulo-c' c from dual union all
        select 'no-nulo-a' a, NULL        b, NULL        c from dual union all
        select 'no-nulo-a' a, NULL        b, 'no-nulo-c' c from dual union all
        select 'no-nulo-a' a, 'no-nulo-b' b, NULL        c from dual union all
        select 'no-nulo-a' a, 'no-nulo-b' b, 'no-nulo-c' c from dual
      );

我对第一个案例发表评论,因为你说"至少有一个字段不为空"。