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

Dan*_*Dan 10 sql sql-server sql-server-2008

请考虑以下表模式:

----------------------------------
|  ID  |  MinValue  |  MaxValue  |
----------------------------------
|  1   |      0     |    10      |
|  2   |     11     |    20      |
|  3   |     21     |    30      |
Run Code Online (Sandbox Code Playgroud)

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

例如:

Input = 17
Output = 2

Input = 4
Output = 1

Input = 26
Output = 3
Run Code Online (Sandbox Code Playgroud)

我以为我可以这样做:

SELECT ID FROM MyTable WHERE MinValue >= @input AND MaxValue <= @input
Run Code Online (Sandbox Code Playgroud)

但它不起作用,没有任何返回.

我确信这个解决方案很简单,但我很难过.

在SQL Server中实现此目的的最佳方法是什么?

Imr*_*han 17

试试这个

SELECT ID FROM MyTable WHERE @input BETWEEN MinValue AND MaxValue
Run Code Online (Sandbox Code Playgroud)

BEETWEEN的描述

该SQL BETWEEN条件是用于在一个范围内检索值SELECT,INSERT,UPDATE,或DELETE语句.

句法

SQL BETWEEN条件的语法是:

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

表达式是列或计算.

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

注意

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

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

或者你也可以使用喜欢

MinValue <= @input AND MaxValue >= @input
Run Code Online (Sandbox Code Playgroud)


小智 10

试试这个,

SELECT ID FROM MyTable WHERE @input BETWEEN MinValue AND MaxValue.
Run Code Online (Sandbox Code Playgroud)

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

SELECT ID FROM MyTable WHERE MinValue <= @input AND MaxValue >= @input
Run Code Online (Sandbox Code Playgroud)