在子句之间 - 我是否需要重新排序参数?

时间:2014-05-08 20:41:20

标签: sql oracle between

我对我来说似乎是一个非常愚蠢的问题。我的查询看起来像:

SELECT id FROM myTable WHERE valueCol BETWEEN :x and :y;

这在:x <= :y时效果很好但是,当:x > :y它没有返回我想要的行时!在这种情况下,我必须手动反转变量才能使其正常工作。

有没有办法写一个变量顺序无关紧要的from子句?

PS&GT;我包括SQL,因为我很确定这只是一个普通的sql问题。

3 个答案:

答案 0 :(得分:10)

是的,这很容易:

SELECT id 
FROM myTable 
WHERE valueCol BETWEEN LEAST(:x,:y) and GREATEST(:x,:y);

答案 1 :(得分:4)

您可以自己进行检查并交换值,或者,您可以执行类似的操作并让Oracle弄清楚:

BETWEEN LEAST(:x,:y) AND GREATEST(:x,:y)

答案 2 :(得分:0)

你可以使用案例:

between case when :x <= :y then :x else :y end 
and case when :x <= :y then :y else :x end