如何在表

时间:2015-12-01 13:34:29

标签: oracle oracle11g oracle10g constraints notnull

我需要在表中查找所有非空列。例如,我的表是下面的一个

enter image description here

可以说,Column1,Column2和Column3具有非空约束,Column4,Column5和Column6具有可空类型。在Oracle中是否有任何查询列出非空类型的列名,即我需要获取列名Column1,Column2和Column3。

渴望输出

Column1
Column2
Column3

我知道应该有一种简单的方法来实现这一点,但对Oracle来说是新手。任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:6)

您可以查询all_tab_columns表:

select column_name
from all_tab_columns
where table_name = 'TABLE1'
and nullable = 'N';

答案 1 :(得分:2)

  

我知道应该有一种简单的方法来实现这一点,但对Oracle来说是新手。

嗯,online documentation正是您需要研究的内容。

根据权限,您需要查看 [DBA | USER | ALL] _TAB_COLUMNS

ALL_TAB_COLUMNS

Column      Datatype        Description
NULLABLE    VARCHAR2(1)     Indicates whether a column allows NULLs. 
                            The value is N if there is a NOT NULL constraint
                            on the column or if the column is part of a PRIMARY KEY. 
                            The constraint should be in an ENABLE VALIDATE state.

因此,根据文档,您需要使用过滤器

NULLABLE = 'N'