重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
oracle 怎么判断数据为空
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了五华免费建站欢迎大家使用!
需要确定具体是某个字段为空,还是为:' ' 这样的格式。如果是确实为空,那用is null 就可以查出来,如果是后面的就需要用like 字段名 like '% %'
空值null比较特殊能通=或者进行查询能用is null或者is not null进行查询例数据null值用 字段名=1字段名1字段名=null都能条数据检索字段名 is null能检索 所需要查询数据两种!
在sql中
空值有NULL 和''的形式
当是NULL的时候用 IS NULL判断
当是''的时候用 =''判断
比如
select * from table where enddate IS NULL;
select * from table where str='';
yyy上面有索引的话非常快的。
或者还有另外一种方法,你可以试一下。
alter table xxx modify yyy not null ;
dexter@REPOalter table ts modify id not null ;
alter table ts modify id not null
*
第 1 行出现错误:
ORA-02296: 无法启用 (DEXTER.) - 找到空值
如果有空值就会报错。
需要用到循环及动态sql。
如test表中有如下数据,其中id和name列有空值。
执行以下内容:
declare
v_count int;--定义变量
v_col varchar2(20);--定义变量
v_sql varchar2(2000);--定义变量
v_last_col varchar2(20);--定义变量
cursor cur_col is select column_name from user_tab_cols where table_name='TEST' order by column_id;--定义游标
begin
select column_name into v_last_col from user_tab_cols where table_name='TEST' and column_id=(select max(column_id) from user_tab_cols where table_name='TEST');--取出表中最后一个字段放入v_last_col
open cur_col;--打开游标
loop --执行循环
fetch cur_col into v_col;--取出游标内容到变量v_col
v_sql:='select count(*) from TEST where '||v_col||' is null';
execute immediate v_sql into v_count;--执行动态sql
if v_count0--如果查询有空值的字段不为空,则输出此字段名
then
dbms_output.put_line(v_col);
end if;
exit when v_col=v_last_col; --退出循环条件
end loop;--结束循环
close cur_col;--关闭游标
end;
执行结果: