Miracle_Qsc 2011-10-12 13:05
浏览 238
已采纳

oracle查询问题

一张表有60个字段,如何查出这60个字段全部不为空的记录个数,小弟没思路,麻烦大家指点一下,谢谢

  • 写回答

6条回答 默认 最新

  • iteye_8576 2011-10-12 13:36
    关注

    字段少的时候:
    [code="sql"]select count(*) from tb where a is null and b is null[/code]

    字段多的时候,:
    [code="sql"]
    DECLARE
    TYPE myref IS REF CURSOR;
    cur myref;
    sqlStr VARCHAR2(200);
    tb_name VARCHAR2(20);
    TYPE arrays IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;
    column_array arrays;
    null_num INTEGER;
    BEGIN
    tb_name := 'TB';
    sqlStr := 'SELECT column_name FROM user_tab_columns WHERE table_name = ''' ||
    tb_name || '''';
    OPEN cur FOR sqlStr;
    FETCH cur BULK COLLECT
    INTO column_array;
    CLOSE cur;

    sqlStr := 'SELECT COUNT(*) FROM ' || tb_name || ' WHERE 1=1';
    FOR i IN column_array.FIRST .. column_array.LAST LOOP
        sqlStr := sqlStr || ' AND ' || column_array(i) || ' IS NULL ';
    END LOOP;
    
    EXECUTE IMMEDIATE sqlStr
        INTO null_num;
    -- 都为空的记录数
    dbms_output.put_line(null_num);
    

    END;
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址
  • ¥15 elmos524.33 eeprom的读写问题
  • ¥15 使用Java milo连接Kepserver服务端报错?
  • ¥15 用ADS设计一款的射频功率放大器
  • ¥15 怎么求交点连线的理论解?
  • ¥20 软件开发方法学习来了
  • ¥15 微信小程序商城如何实现多商户收款 平台分润抽成
  • ¥15 HC32L176调试了一个通过TIMER5+DMA驱动WS2812B
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!