Oracle中取出一个表内所有空值的个数
Oracle中取出一个表内所有空值的个数我要将一个表中所有的空值的个数取出来比如nameagesex-----------------aaa15bbb女ddd男eee16...
Oracle中取出一个表内所有空值的个数
我要将一个表中所有的空值的个数取出来 比如
name age sex
-----------------
aaa 15
bbb 女
ddd 男
eee 16 男
这里面就是一共有三个空值 怎么样才能取出来这个值呢
我是在Oracle中使用
这个 我只是举了个例子 我的表最少的也有43个字段 多的有174个 我不想一个一个的做判断 有没有什么简单的办法 展开
我要将一个表中所有的空值的个数取出来 比如
name age sex
-----------------
aaa 15
bbb 女
ddd 男
eee 16 男
这里面就是一共有三个空值 怎么样才能取出来这个值呢
我是在Oracle中使用
这个 我只是举了个例子 我的表最少的也有43个字段 多的有174个 我不想一个一个的做判断 有没有什么简单的办法 展开
2个回答
展开全部
select (select count(*) from table where age is null)+
(select count(*) from table where sex is null) from dual;
(select count(*) from table where sex is null) from dual;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
弄个存储过程:
create or replace procedure select_null_count(
return_cnt out number,
table_name varchar2
)as
cnt_tmp number :=0;
sql_str varchar(32767);
cursor cur(tname varchar2) is
select column_name from user_tab_columns where table_name = tname;
begin
return_cnt := 0;
for rec in cur(table_name) loop
sql_str := ' ';
sql_str := 'select count(*) from '||upper(table_name)||' where '||rec.column_name||' is null';
execute immediate sql_str into cnt_tmp;
return_cnt := return_cnt + cnt_tmp;
end loop;
end;
/
调用方法如下:
SQL>select * from test1;
部门 岗位 工资
---------- ---------- ----------
部门1 职位1 10
部门1 职位1 20
部门1 职位1 30
部门1 职位2 40
部门1 职位2 50
职位1 60
职位1 70
职位2 80
职位2 90
9 rows selected.
SQL>var cnt number
SQL>exec select_null_count(:cnt,'TEST1')
PL/SQL procedure successfully completed.
SQL>print cnt
CNT
----------
4
---
以上,希望对你有所帮助。
---
以上,希望对你有所帮助。
create or replace procedure select_null_count(
return_cnt out number,
table_name varchar2
)as
cnt_tmp number :=0;
sql_str varchar(32767);
cursor cur(tname varchar2) is
select column_name from user_tab_columns where table_name = tname;
begin
return_cnt := 0;
for rec in cur(table_name) loop
sql_str := ' ';
sql_str := 'select count(*) from '||upper(table_name)||' where '||rec.column_name||' is null';
execute immediate sql_str into cnt_tmp;
return_cnt := return_cnt + cnt_tmp;
end loop;
end;
/
调用方法如下:
SQL>select * from test1;
部门 岗位 工资
---------- ---------- ----------
部门1 职位1 10
部门1 职位1 20
部门1 职位1 30
部门1 职位2 40
部门1 职位2 50
职位1 60
职位1 70
职位2 80
职位2 90
9 rows selected.
SQL>var cnt number
SQL>exec select_null_count(:cnt,'TEST1')
PL/SQL procedure successfully completed.
SQL>print cnt
CNT
----------
4
---
以上,希望对你有所帮助。
---
以上,希望对你有所帮助。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询