2014-09-01 197 views
0

我有兩列的表。一個是開始,另一個是結束。 如果我給出任何數字,它必須選擇表中所有匹配的行。 例子:如何在oracle sql中取數範圍?

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

如果我給123應該挑:

 
100 | 200 
100 | 500 
1 | 345 

如何編寫查詢呢?

+0

我已刪除了MySQL的標籤,因爲你說這是一個Oracle問題。 – Arth 2014-09-01 10:23:37

+0

向我們顯示一個輸入 – zaratustra 2014-09-01 10:46:37

回答

2

包容性選擇:

SELECT * FROM table 
WHERE @value BETWEEN start AND end 

獨家選擇:

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

但我沒有開始和結束。我只有號碼。 – 2014-09-01 10:25:33

+3

我該如何理解這一點:「我有兩列的表,一列是開始,另一列是結束。」 – Bulat 2014-09-01 10:29:06

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