当表的字段个数很多的时候,取得所有字段都是null的个数
字段很少的时候,可以这么写:
select count(*) from tb where a is null and b is null ...
字段很多的时候就不是很方便了,下面用动态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;
分享到:
相关推荐
- **Sql Server**:`Timestamp`类型是以二进制格式存储的,可以将`DataSet`中的该字段类型设置为`base64Binary`。 - **Oracle**:`Timestamp`类型是以时间格式存储的。这意味着无法使用相同的`DataSet`同时装载Sql ...
删除HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services中所有以oracle或OraWeb为开头的键。 删除HKEY_LOCAL_MACHINE/SYSETM/CurrentControlSet/Services/Eventlog/application中所有以oracle开头的键。 ...
如果该列允许为NULL,则:该字段若为0,表示数据值不为NULL,若为-1,表示数据值为NULL。 - **sqlname**:代表列名或变量名。 - **sqlformat**:保留为以后使用。 - **sqlitype**:指定用户定义的指示符变量的数据...
21. 插入到student表中,所有必填字段都不能为NULL,所以选项B正确,其他选项缺少必要字段或包含非法类型(如'男'而不是'F'或'M')。 22-24. 由于没有提供具体的SQL语句,这部分无法给出详细的答案,但通常检索学生...
在数据库中,这种结构通常通过自关联的表来实现,即一张表中的某个字段引用了该表自身的主键。 在进行树形查询时,我们通常会用到递归SQL查询或者利用数据库提供的特定功能,如Oracle的CONNECT BY,MySQL的WITH ...
76 <br>0111 计算字符串中子字符串出现的次数 76 <br>0112 获得字符串中大写字母的个数 77 <br>0113 获得某字符在字符串中最后出现的位置 78 <br>0114 如何找出字符串中某一字符的所有位置 78...