如何在Oracle中将一个值与两个值进行比较

时间:2018-06-21 22:11:38

标签: oracle oracle11g

我想在不使用OR或DECODE的情况下将一个值与2个值进行比较。我想与两个值进行比较的值是我作为函数的返回码获得的值。如果我使用OR或DECODE,则必须调用函数两次,这会降低性能。目前我正在编码如下

select *
from table1 t1, table2 t1
where t1.empid = t2.empid
and myfunction(t2.balance) = t1.total OR myfunction(t2.balance) = -1

请建议是否可以调用一次函数并与2个值进行比较。

1 个答案:

答案 0 :(得分:2)

要缩短代码,您可以使用IN运算符,其作用类似于OR

select *
from table1 t1
join table2 t1 on
  t1.empid = t2.empid
and myfunction(t2.balance) in (t1.total, -1)

我还用JOIN关键字的where子句替换了老式的联接语法,建议您在以后的SQL旅程中使用它。

要知道的是,即使您两次调用了该函数,大多数现代数据库实际上也只会调用一次,因此我不会对此太在意。