获取表中所有记录的值为空的列的列表-SQL

时间:2018-08-08 14:27:34

标签: sql postgresql

我有一个表,其中包含数百万条记录和50个奇数列,其中许多列对于表中的所有记录都具有空值。如何编写一个SQL查询来告诉我哪些列具有所有空记录?

3 个答案:

答案 0 :(得分:1)

您可以使用bool_and

WITH sample (column1, column2, column3) AS (
    VALUES 
        ('LOREM IPSUM', 'LOREM IPSUM', NULL),
        ('LOREM IPSUM', 'LOREM IPSUM', NULL),
        ('LOREM IPSUM', 'LOREM IPSUM', NULL),
        ('LOREM IPSUM', 'LOREM IPSUM', NULL),
        ('LOREM IPSUM', NULL, NULL)
)
SELECT
    bool_and(column1 IS NULL) AS is_column1_entire_null, 
    bool_and(column2 IS NULL) AS is_column2_entire_null,
    bool_and(column3 IS NULL) AS is_column3_entire_null 
FROM 
    sample

文档引用:

  

(...)如果所有输入值均为true,则为true,否则为false

答案 1 :(得分:1)

如果您想知道哪些列的所有null值都意味着没有行具有值,则该行的计数将为0,所以只需检查一下即可。

<div *ngFor='let person of persons'>
   <p> {{ person.roles.label.join(',') }} </p>
</div>

答案 2 :(得分:0)

暴力破解方法类似于:

select concat_ws(',',
                 (case when count(*) <> count(col1) then 'col1' end),
                 (case when count(*) <> count(col2) then 'col2' end),
                 (case when count(*) <> count(col3) then 'col3' end),
                 . . .
                ) as columns_with_null_values
from t;