在 Oracle 中仅选择没有 Null 值的列

Posted

技术标签:

【中文标题】在 Oracle 中仅选择没有 Null 值的列【英文标题】:Select only Columns without Null values in Oracle 【发布时间】:2014-02-03 09:11:23 【问题描述】:

我的表中有 20 列....

如何只选择没有空值的列

col1 col2 col3
20    12   null

期望的输出

col1 col2 
20    12  

【问题讨论】:

我认为你做不到。要选择的列列表在您的SELECT 语句中进行了硬编码。您可以使用WHEREHAVING 过滤掉行,但不能动态更改列。 这里有很多和你一样关心的问题。 ***.com/questions/4627938/…***.com/questions/2219870/…这些有帮助吗? 问题格式不正确。您是否希望仅选择具有 ALWAYS(这意味着:在每条记录中)NOT NULL 值的列?还是只选择 DDL 上具有 NOT NULL 属性的列? Not NOT NULL 属性...列可能有也可能没有值。我只需要选择有值的列 【参考方案1】:

SQL 的语义不允许这样做 - 每个 SQL 查询都包含一个投影,您可以通过该投影指定输出中所需的列。

除非您运行两次查询,否则您无法提前知道结果是什么。事实上,即使您运行两次查询,结果也可能在两次之间发生变化(除非您以可序列化模式运行)。

换句话说,这个问题没有多大意义。

另一方面,如果您的要求是在向用户显示时简单地隐藏列,这是一个完全不同的问题 - 答案不在 SQL 中,而是在您的表示逻辑中。

【讨论】:

【参考方案2】:

您可以转到表的元数据并检查定义为 NOT NULL 的列并创建仅包含这些列的选择查询。

【讨论】:

以上是关于在 Oracle 中仅选择没有 Null 值的列的主要内容,如果未能解决你的问题,请参考以下文章

如何为oracle中的特定输入选择不包含空值的列名?

SQL:将所有没有默认值的列的默认值设置为 NULL

如何在 QTableWidget 中仅获取包含值的行/列数?

Spark SQL中Dataframe join操作含null值的列

Oracle:查找只有空值的列

在oracle中仅选择且仅选择特定记录[关闭]