打印具有空值oracle的列名

时间:2017-09-06 02:20:58

标签: sql oracle

我正在创建一个我需要这个部分的程序。 表格

col1   col2   col3
a      null     b
null    d      null
c       e      null

输出

col1   col2   col3     result
 a      null    b       col2
 null    d     null    col1,col3
 c       e     null     col3

我们可以使用案例陈述吗?

2 个答案:

答案 0 :(得分:2)

您还可以按如下方式使用解码。

select t.*, 
    rtrim(decode(col1,null,'col1,',null) 
    || decode(col2,null,'col2,',null)
    || decode(col3,null,'col3,',null),',')  as result 
from t; 

答案 1 :(得分:1)

您可以使用case

select col1, col2, col3,
       substr( ( (case when col1 is null then ',col1' else '' end) ||
                 (case when col2 is null then ',col2' else '' end) ||
                 (case when col3 is null then ',col3' else '' end)
               ), 2)
from t;

严格来说,else ''是多余的,因为Oracle会将''视为NULL值。但是,我喜欢包含它,因为这种行为与大多数数据库不同。