如何根据oracle sql中的数字获取范围?

时间:2014-09-01 10:19:23

标签: sql oracle

我有两列的表。一个是开始,另一个列是结束。 如果我给出任何数字,它必须选择表中所有匹配的行。 例如:

start |  End
100   |  200
100   |  500
1     |  345
200   |  400

如果我给123,它应该选择:

100 | 200
100 | 500
1   | 345

如何为此编写查询?

2 个答案:

答案 0 :(得分:2)

包容性选择:

SELECT * FROM table
WHERE @value BETWEEN start AND end

独家选择:

SELECT * FROM table
WHERE @value > start AND value < end

答案 1 :(得分:2)

我不明白你对这个任务的困惑:

with t(strt, En) as (
  select 100,  200 from dual union all
  select 100,  500 from dual union all
  select 1,  345 from dual union all
  select 200,  400 from dual
)
select *
  from t
 where 123 between strt and en

STRT     EN
-----------
 100    200
 100    500
   1    345