2015-03-19 77 views
4

考慮以下表模式:檢查Integer是一個範圍列之間的值

---------------------------------- 
| ID | MinValue | MaxValue | 
---------------------------------- 
| 1 |  0  | 10  | 
| 2 |  11  | 20  | 
| 3 |  21  | 30  | 

我希望能夠整數關口,並使其返回相應的ID,其中該值的範圍相匹配最小值和最大值。

EG:

Input = 17 
Output = 2 

Input = 4 
Output = 1 

Input = 26 
Output = 3 

我想我可以做這樣的事情:

SELECT ID FROM MyTable WHERE MinValue >= @input AND MaxValue <= @input 

但它不工作,什麼都不會返回。

我敢肯定,解決方案是公然簡單,但我很難過。

在SQL Server中實現此目的的最佳方式是什麼?

+0

...'MinValue和MaxValue之間的@input'。 – B0Andrew 2015-03-19 12:01:05

+0

你很近:'MinValue <= @input AND MaxValue> = @ input' – 2015-03-19 12:02:58

回答

8

試試這個

SELECT ID FROM MyTable WHERE @input BETWEEN MinValue AND MaxValue 

BEETWEEN

的SQL說明0​​條件用於檢索的SELECTINSERTUPDATE,或DELETE聲明範圍內的值。

SYNTAX

爲SQL語法BETWEEN條件是:

表達BETWEEN value1 AND value2; 參數或參數

表達式是列或計算。

value1value2創建一個表達式進行比較的包含範圍。

注意

的SQL BETWEEN條件將返回記錄,其中表達的value1value2(含)的範圍內。

裁判:http://www.techonthenet.com/sql/between.php

,或者您也可以使用像

MinValue <= @input AND MaxValue >= @input 
2

利用之間

SELECT ID 
FROM MyTable 
WHERE @input BETWEEN MinValue AND MaxValue 
10

試試這個,

SELECT ID FROM MyTable WHERE @input BETWEEN MinValue AND MaxValue. 

或翻轉在發言平等的跡象。

SELECT ID FROM MyTable WHERE MinValue <= @input AND MaxValue >= @input