-
yks999 小试身手Lv3
发表于2023-1-5 12:59
悬赏10
已解决
条件为假的情况下该ardb数据库查询sql查询的结果为空
现在if判断为假,但是计算时会出现java的arrayIndexOutOfBoundsException错误,是因为计算了ardb的缘故,我想有没有方法在判断为假的时候不计算ardb,或者有什么其他解决方法?
6个回答
本帖最后由 Bryce 于 2023-1-5 14:39 编辑
arbd写在外面,把这个过滤条件去掉,比如就用个文本测试的时候,条件不符合的话会报这个错误吗
Bryce 发表于 2023-1-5 14:37
arbd写在外面,把这个过滤条件去掉,比如就用个文本测试的时候,条件不符合的话会报这个错误吗 ...
对,if为假的时候,它也会计算if为真里面的ardb的数据库sql,然后报错
我刚试了下,确实if就算判断为假也会执行这个sql,有一种方法可以试一下,就是用分支,比如我主分支的过滤条件直接就是aa.id in <#=ardb(select id from tableB where code = '"+@code+"')#>,子分支是aa.id = @code,把判断写在分支表达式里,如果为真进入主分支,为假进入子分支,这样为假的时候就不会执行这个ardb了
Bryce 发表于 2023-1-5 15:59
我刚试了下,确实if就算判断为假也会执行这个sql,有一种方法可以试一下,就是用分支,比如我主分支的过滤 ...
这个方法也可以,我的这个查询是全辖的查询,忘记加这个库它自己了,加了它自己就不是空值,也就解决了,但是还是需要亿信这边看看能不能把这个问题解决了,毕竟if判断也不需要两边都计算的是吧
yks999 发表于 2023-1-5 16:29
这个方法也可以,我的这个查询是全辖的查询,忘记加这个库它自己了,加了它自己就不是空值,也就解决了,但是 ...
这个应该是正常的现象,因为语句首先要编译成功,才能运行,您编译都失败的话,计算肯定会出错的,就好比我写代码的时候在if语句第一个条件随便写几个字母,是肯定不能运行的,即使没有走这条分支