Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle中仅选择不带空值的列_Oracle - Fatal编程技术网

在Oracle中仅选择不带空值的列

在Oracle中仅选择不带空值的列,oracle,Oracle,我的表中有20列 如何仅选择没有空值的列 col1 col2 col3 20 12 null 期望输出 col1 col2 20 12 您可以转到表的元数据,检查定义为NOTNULL的列,并仅使用这些列创建select查询 SQL的语义不允许这种情况-每个SQL查询都包含一个投影,通过该投影,您可以指定输出中需要的列 除非运行两次查询,否则无法提前知道结果。事实上,即使您运行查询两次,结果也可能在两次运行之间发生变化(除非您在可序列化模式下运行查询) 换句话说,这个问题

我的表中有20列

如何仅选择没有空值的列

col1 col2 col3
20    12   null
期望输出

col1 col2 
20    12  

您可以转到表的元数据,检查定义为NOTNULL的列,并仅使用这些列创建select查询

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

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

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


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

我认为您无法做到这一点。要选择的列列表在
select
语句中是硬编码的。您可以使用
WHERE
HAVING
来筛选行,但不能动态更改列。这里有很多问题与您的问题一样。这些有帮助吗?这个问题的形式不太好。是否仅选择始终(这意味着:在每个记录中)非空值的列?或者只选择DDL上具有NOT NULL属性的列?NOT NOT NULL属性。。。列可能有值,也可能没有值。。我只需要选择具有值的列