一、'' is null为true,''和null是同一个东西。spa
神经病写法:不管vc_itemids是null仍是'',or后面的那一句都为false,判空只能使用is null 或者 is not null。下面的vc_itemids只须要前面的判空就能够了。3d
分析:code
2.低效的子查询blog
神经病写法:子查询并无用到外面查询的列,可是外面没查询一条数据,就执行一次子查询,可是子查询的数据都是同样的,应写成临时数据。it
改善写法:table
declare my_date varchar2(20); begin select t1.real_date into my_date from (select '20200520' real_date from dual) t1; --使用上面的变量值放到where条件里 SELECT * FROM table_a A, table_b b WHERE A.item1 IN ('1', '2', '5') and a.item2 = b.item3(+) and a.item6 >= my_date and a.item5 is null; end;