我试图找到总行数,以及数据库中每列的空行数。我觉得以下内容应该有效,但每次运行时,num_nulls
和num_rows
都会空白(所以我放入COALESCE
所以它现在导致0)
SELECT atc.column_name,atc.table_name,atc.data_type,COALESCE(atc.num_nulls,0),COALESCE(at.num_rows,0) 从 all_tab_columns atc JO ON all_tables at ON ATC.TABLE_NAME = at.table_name;
我的代码是否有问题,或者all_tab_columns
或all_tables
是否有可能不是最新的?
PS。表中确实有信息,我已经检查过数据库是否为空。
答案 0 :(得分:1)
你可以循环遍历all_tab_columns表,为你生成一个看起来像这样的脚本:
with data as (
select
count(*) tot_rows,
count(owner) owner,
count(object_name) object_name,
count(subobject_name) subobject_name
from tblname
)
select column_name, not_null_count, tot_rows - not_null_count null_count
from data
unpivot (
not_null_count
for column_name in (owner,object_name,subobject_name)
);
哪会给你结果:
COLUMN_NAME NOT_NULL_COUNT NULL_COUNT
-------------- -------------- ----------
OWNER 801 0
OBJECT_NAME 801 0
SUBOBJECT_NAME 0 801