where not a is null and a <> '' 改为 where a is not null and a <> ''
oracle里面的 '' 就是 null T@ora>create table a(a varchar(10));Table created.Elapsed: 00:00:00.01 T@ora>insert into a values(null);1 row created.Elapsed: 00:00:00.00 T@ora>insert into a values('');1 row created.Elapsed: 00:00:00.00 T@ora>select * from a where a is null;A ----------Elapsed: 00:00:00.06 T@ora>select count(*) from a where a is null; COUNT(*) ---------- 2Elapsed: 00:00:00.04 T@ora>select dump(a) from a;DUMP(A) ---------------------------------------------------------------- NULL NULL
改为
where a is not null and a <> ''
T@ora>create table a(a varchar(10));Table created.Elapsed: 00:00:00.01
T@ora>insert into a values(null);1 row created.Elapsed: 00:00:00.00
T@ora>insert into a values('');1 row created.Elapsed: 00:00:00.00
T@ora>select * from a where a is null;A
----------Elapsed: 00:00:00.06
T@ora>select count(*) from a where a is null; COUNT(*)
----------
2Elapsed: 00:00:00.04
T@ora>select dump(a) from a;DUMP(A)
----------------------------------------------------------------
NULL
NULL
where isnull(a,'')<>''
where nvl(a,'') <> ''