检查Integer是否在一系列列值之间

时间:2015-03-19 11:58:24

标签: sql sql-server sql-server-2008

考虑以下表格架构:

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

我希望能够传递一个整数,并让它返回适当的ID,其值与Min和Max Value之间的范围相匹配。

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中实现此目的的最佳方法是什么?

3 个答案:

答案 0 :(得分:15)

试试这个

SELECT ID FROM MyTable WHERE @input BETWEEN MinValue AND MaxValue

BEETWEEN的描述

SQL BETWEEN条件用于检索SELECTINSERTUPDATEDELETE语句范围内的值。

<强>语法

SQL BETWEEN条件的语法是:

表达式BETWEEN value1 AND value2; 参数或参数

表达式是一个列或计算。

value1value2创建一个包含表达式的包含范围。

注意

SQL BETWEEN条件将返回表达式在value1value2(包括)范围内的记录。

参考:http://www.techonthenet.com/sql/between.php

或者您也可以使用

MinValue <= @input AND MaxValue >= @input

答案 1 :(得分:10)

试试这个,

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

或者在你的陈述中翻转等号。

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

答案 2 :(得分:2)

使用BETWEEN

SELECT ID 
FROM MyTable 
WHERE @input BETWEEN MinValue AND MaxValue