首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

请问怎么查询一个表中有哪些列全为空

2012-08-13 
请教如何查询一个表中有哪些列全为空各位达人,请教一个问题。假设现在有一个表 table1, 共有 10列,全是 INT

请教如何查询一个表中有哪些列全为空
各位达人,

请教一个问题。

假设现在有一个表 table1, 共有 10列,全是 INT型。

create table table1
(col_1 INT,
 col_2 INT,
 col_3 INT,
 col_4 INT,
 col_5 INT,
 col_6 INT,
 col_7 INT,
 col_8 INT,
 col_9 INT,
 col_10 INT)

这个表的记录的插入规则是

先插入若干记录, 这些记录在第 10列 col_10 有值,但是在其他列为空值;
再插入若干记录,这些记录在第 10列 col_10 和第 9列 col_9有值,但是在其他列为空值;
再插入若干记录,这些记录在第 10列 col_10,第 9列 col_9 和 第 8列 col_8有值,但是在其他列为空值;
...

请问我可以用一个什么样的 sql语句,来判断某一个时刻这个表中全为空的列的列名是哪些?

这里全为空的意思是:这个表中的所有记录在这一列的值都为空值

万分感谢!

[解决办法]
这样可以?

SQL code
CREATE TABLE test(a NUMBER(5),b NUMBER(5),c NUMBER(5));INSERT INTO test VALUES (100,NULL,null);INSERT INTO test VALUES (null,200,null);INSERT INTO test VALUES (300,NULL,null);COMMIT;SELECT column_name FROM (  SELECT 'A'column_name,Max(Length(a))column_len FROM test UNION ALL   SELECT 'B'column_name,Max(Length(b))column_len FROM test UNION ALL   SELECT 'C'column_name,Max(Length(c))column_len FROM test )WHERE column_len IS NULL;
[解决办法]
怕是要用PL/SQL哦
这样是否可以:
SQL code
DECLARE CURSOR temp IS SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=Upper('TEST');v_num NUMBER;BEGIN  FOR i IN temp   LOOP    execute immediate 'SELECT Count(*) FROM test WHERE '||i.COLUMN_NAME||' IS NOT null' INTO v_num;     IF v_num=0 THEN       Dbms_Output.put_line('==columns that have no data=='||i.COLUMN_NAME);    END IF;     NULL;   END LOOP;END; 

热点排行