SQL- 仅选择 NULL 列

SQL- Selecting NULL columns only

我需要编写一个查询,该查询将查看 table,并从中查看 select any/all 具有所有空行的列。

我宁愿不必说 "SELECT (each column name)",而宁愿说“SELECT(来自整个 table,那些列)WHERE(行都是 NULL)。

我知道 CASE 和 WHEN 语句,但我的理解是必须在 select 语句中专门引用列。我将在许多不同的 table 上使用这个查询,具有许多不同的维度和列名,所以我希望查询是通用的。

我在 Toad 中使用 SQL 和 Vertica 数据库。

这是我的 table 看起来类似于:

此 table 包含我需要查询的列。我需要查询的列有 "owner_id", NOT TYPE_NAME, NULLABLE 等。 THIS table 中的每一行实际上是一个具有如此多值的列,它是这些值我需要 运行 我的查询。

'Simply' 放:如果一个列有 ALL NULL 行,我需要识别 and/or select 它。

有什么建议吗? %已解决^^^%

我找到了循环遍历列的方法示例,但尽管进行了研究,但我仍然无法理解这一切。

如:col_names和column_name有什么区别? FROM 语句和 WHERE 中的文本也是如此。那些不应该都是 table 名字吗?那么 found_rows() 是什么意思呢?

DECLARE col_names CURSOR FOR
  SELECT column_name
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  ORDER BY ordinal_position;

select FOUND_ROWS() into num_rows;

SET i = 1;
the_loop: LOOP

   IF i > num_rows THEN
        CLOSE col_names;
        LEAVE the_loop;
    END IF;

    FETCH col_names 
    INTO col_name;     

     //do stuff

    SET i = i + 1;  
END LOOP the_loop;

据我了解,您想确定哪些列在所有行上都具有 NULL 值并且不想键入所有列,对吗?

如果是这样,我会这样做:

1) 构建一个将 用作输入参数并执行以下操作的函数: --仅供参考:这是一个伪代码。我这里没有 mysql 来获取正确的语法

select sum(
            case when CAST(<column_name> as varchar(5200)) is not null then 1 else 0 end --5200 seems to be your longer column
        )
from YOUR_TABLE
--the idea is to cast the column as anythig; if it is null, it gets a 0.
--If the sum across the rows is 0, it means that all the rows are null

2) 遍历列名并调用函数