作者:iamlaosong
一个查询语句,只是查询条件值的改变,导致查询出错,原因不明,情况如下:
select *
from tb_evt_dlv a, sncn_zd_jg b,tb_evt_mail_clct c
where a.mail_num=c.mail_num
and a.dlv_date = to_date(‘2013-3-10‘,‘yyyy-mm-dd‘)
and a.dlv_bureau_org_code =b.zj_code
and a.dlv_bureau_org_code like ‘230073%‘
上面语句可以正常执行,下面这个语句却报错:ORA-03113:通信通道的文件结束
select *
from tb_evt_dlv a, sncn_zd_jg b,tb_evt_mail_clct c
where a.mail_num=c.mail_num
and a.dlv_date = to_date(‘2013-3-10‘,‘yyyy-mm-dd‘)
and a.dlv_bureau_org_code =b.zj_code
and a.dlv_bureau_org_code like ‘23007300%‘
两个语句的差别就是机构号字段条件值由‘230073%’改为‘23007300%’,23007300这个机构是存在的,用其他存在的机构或者不存在的机构号都没有问题,就是这个机构号有问题,用‘2300730%’(少一个0)也会报同样的错误,但是长度短一点,比如‘2300%’也可以正常查询,按说‘2300%’的查询结果应该包含‘23007300%’的查询结果,为甚会报错呢?
试验的其他机构比如‘23126700%’就没有问题,但2300开头的很多机构都不行,比如’23007400%‘-’23007800‘都会报错,但是如果这个机构代码不存在则不会报错,比如’23007311%‘就不会报错,只是没有结果而已,去掉任何一个表,只用两个表关联,同样的条件也可以正常查询,真是奇怪。
再次试验了一下,好像2300XX00这样结构的机构号都不行,其它没问题,比如23000115是没问题的。
不知什么原因,只能解释为Oracle的Bug了。
一个奇怪的查询语句(不知原因),布布扣,bubuko.com
原文:http://blog.csdn.net/iamlaosong/article/details/23254501