在Oracle中仅选择不带空值的列
我的表中有20列 如何仅选择没有空值的列在Oracle中仅选择不带空值的列,oracle,Oracle,我的表中有20列 如何仅选择没有空值的列 col1 col2 col3 20 12 null 期望输出 col1 col2 20 12 您可以转到表的元数据,检查定义为NOTNULL的列,并仅使用这些列创建select查询 SQL的语义不允许这种情况-每个SQL查询都包含一个投影,通过该投影,您可以指定输出中需要的列 除非运行两次查询,否则无法提前知道结果。事实上,即使您运行查询两次,结果也可能在两次运行之间发生变化(除非您在可序列化模式下运行查询) 换句话说,这个问题
col1 col2 col3
20 12 null
期望输出
col1 col2
20 12
您可以转到表的元数据,检查定义为NOTNULL的列,并仅使用这些列创建select查询 SQL的语义不允许这种情况-每个SQL查询都包含一个投影,通过该投影,您可以指定输出中需要的列 除非运行两次查询,否则无法提前知道结果。事实上,即使您运行查询两次,结果也可能在两次运行之间发生变化(除非您在可序列化模式下运行查询) 换句话说,这个问题没有多大意义
另一方面,如果您的要求是在向用户显示列时简单地隐藏该列,那么这是一个完全不同的问题—答案不在于SQL,而在于您的表示逻辑。我认为您无法做到这一点。要选择的列列表在
select
语句中是硬编码的。您可以使用WHERE
和HAVING
来筛选行,但不能动态更改列。这里有很多问题与您的问题一样。这些有帮助吗?这个问题的形式不太好。是否仅选择始终(这意味着:在每个记录中)非空值的列?或者只选择DDL上具有NOT NULL属性的列?NOT NOT NULL属性。。。列可能有值,也可能没有值。。我只需要选择具有值的列