我对我来说似乎是一个非常愚蠢的问题。我的查询看起来像:
SELECT id FROM myTable WHERE valueCol BETWEEN :x and :y;
这在:x <= :y
时效果很好但是,当:x > :y
它没有返回我想要的行时!在这种情况下,我必须手动反转变量才能使其正常工作。
有没有办法写一个变量顺序无关紧要的from子句?
PS&GT;我包括SQL,因为我很确定这只是一个普通的sql问题。
答案 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