执行之后发现无数据,在TR_DYNAMIC_BOUND 删除一条数据后,再执行这个条SQL,还是为空,没有查询出结果 根据排查发现第二句SQL的表中结果存在null值,就是TO_NUMBER(REGEXP_REPLACE(C.C_SOURCE_CODE ,'[^0-9]',''))的列存在null 导致使用条件not in时,会查询不到结果 解决办法: SQL中将TO_NUMBER(REGEXP_REP...
经过几番检查,发现的not in 和null的问题。atable3表中存在mrid为null的记录,此时not in 查询不到值。 修改方案如下:在子查询中增加非空过滤 select count(*) from atable2 where mrid not in (select mrid from atable3 where mrid is not null) 完毕! ps:count统计函数对null值也不适用,需用count(*...
上周投产之后同事应该在某个页面查询的时候新增了一个not in的条件,结果导致列表部分数据不展示了,经排查发现原来是not in条件的问题。 问题复现: 1.基础数据: 共10条数据 状态为空-1条 已作废-4条 报告审批-5条 代码语言:javascript 复制 select*from v_safe_testengineer v where v.vst_tester='w07387';...
本来是要查出A表中col列值在B表col列中没有出现过的记录。实际数据库是有符合条件的记录的,但是,运行如下SQL: Select*FromAwhereA.colnotin(SelectB.colfromB) 始终查不出结果。经查,原来是查询子句: SelectB.colfromB 查出的结果集中有空值导致的。也就是说,当not in后面跟的结果集中有null值时,not in子...
这个问题的出现,是因为我想将一部分值的数据排除在外,于是就使用not in来解决这个需求,一开始是没有问题的,谁知道后来发现not in中的子查询SQL查出的有些空值。 这个现象直接导致我的主SQL查不出任何数据来了。 经过几番查找下,终于发现了这个问题点的原因,于是在子查询加入了is not null的筛选条件。
Oracle Null 与 in, exists 的关系说明(not in 查不到结果),同事说查询遇到一个奇怪的事,2个表进行notin操作没有返回结果,正常情况下应该是有返回的。 一.问题重现一般来说,问题能重现就是好消息,最怕不能重现。 SQL>connscott/tiger;Connected.SQL>descemp Name
上面查询的where条件等价于id!=1 and id!=3 and id!=null,根据上面的规则,NULL与其他值做=或!=比较结果都是UNKNOWN,所以整个条件就相当于FALSE的,最终没有查出数据。 从执行计划中查看优化器对IN的改写 总结一下,使用in做条件时时始终查不到目标列包含NULL值的行,如果not in条件中包含null值,则不会返回任何...
select*fromfromv_xy_new_small_b awherea.user_codenotin(selectuser_codefromv_xy_meigu_and_empployee) 我就是想剔除下重复的用户,结果发现,今天查不出数据了,昨天还是正常的,找了半圈,发现是Oracle的一些特性 如果这个子查询中,结果中有NULL值,那就会返回空结果集 ...
我们在写SQL时经常会用到in条件,如果in包含的值都是非NULL值,那么没有特殊的,但是如果in中的值包含null值(比如in后面跟一个子查询,子查询返回的结果有NULL值),Oracle又会怎么处理呢? 创建一个测试表t_in zx@TEST>createtablet_in(id number); Tablecreated. ...