仅选择不为空的列值,并使用sql查询仅显示该值

时间:2018-07-23 17:00:37

标签: sql

就像我有这样的桌子

col1  col2  col3  col4
----  ----  ----  ----
   1  NULL  NULL  NULL
NULL     2  NULL  NULL
   3  NULL  NULL  NULL
NULL  NULL  NULL     4

预期结果是:

col5
----
   1
   2
   3
   4

如何使用SQL查询获得这种输出?

4 个答案:

答案 0 :(得分:2)

如果您想要第一个非NULL值,则正在寻找coalesce()

select t.*, coalesce(col1, col2, col3, col4) as col5
from t;

答案 1 :(得分:1)

尝试

SELECT
    (CASE 
        WHEN col1 IS NOT NULL THEN col1 
        WHEN col2 IS NOT NULL THEN col2
        WHEN col3 IS NOT NULL THEN col3
        WHEN col4 IS NOT NULL THEN col4 
    END) AS col5 FROM table

答案 2 :(得分:0)

您的标题表明:

select t.*
from (select col1 as col5
      from table union all
      select col2 
      from table union all
      . . .
     ) t
where col5 is not null;

答案 3 :(得分:0)

Select * from your_table 
WHERE col1 and col2 and col3 and col4 and col5 IS NOT NULL;

在这种方法中,我们只能比较我们的列,之后结果将始终为true,因此我只比较其中的字段不能为NULL的字段。