我需要在表中查找所有非空列。例如,我的表是下面的一个
可以说,Column1,Column2和Column3具有非空约束,Column4,Column5和Column6具有可空类型。在Oracle中是否有任何查询列出非空类型的列名,即我需要获取列名Column1,Column2和Column3。
渴望输出
Column1
Column2
Column3
我知道应该有一种简单的方法来实现这一点,但对Oracle来说是新手。任何帮助都将受到高度赞赏。
答案 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'