gpt4 book ai didi

mysql - SQL- 仅选择 NULL 列

转载 作者:行者123 更新时间:2023-11-30 22:16:02 25 4
gpt4 key购买 nike

我需要编写一个查询来查看一个表,并从中选择任何/所有包含所有空行的列。

我宁愿不必说“SELECT(每个列名)”,而宁愿说“SELECT(从整个表,那些列)WHERE(行都是空的)。

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

我在 Toad 中使用带有 Vertica 数据库的 SQL。

这是我的表格的样子:

TABLE_with_null

此表包含我需要查询的列。我需要查询的列例如“owner_id”、NOT TYPE_NAME、NULLABLE 等。此表中的每一行实际上是一个具有如此多值的列,我需要针对这些值运行查询。

“简单”地说:如果一列包含所有 NULL 行,我需要识别和/或选择它。

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

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

如:col_names 和 column_name 有什么区别? FROM 语句和 WHERE 中的文本也是如此。那些不应该是表名吗?那么 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) 遍历列名并调用函数

关于mysql - SQL- 仅选择 NULL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38248071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com