0

次のデータベーステーブルがあるとしましょう

id     min     max
1        0       0
2        1      90
3       91     180
4      181     365
5      366       0

だから、私がそれを実現するために必要なのはこれです。

私が検索する場合、私が検索する場合0、私は取得する必要があります、私は取得する必要があり、何でも、私は取得する必要がありますid=1 (min=0, max=0);95id=3 (min=91, max=180);>=366id=5;

4

4 に答える 4

1
SELECT  [Id]
FROM    @Table 
WHERE   (@Value BETWEEN [min] AND [max])
OR      (@Value >= [min] AND [max] = -1)

無限数の最大値(ID 5の最大値)を-1にすることは可能ですか?

もしそうなら、上記のコードはうまくいくでしょう。

minよりも大きい数値を含める必要があり、id1と5の両方で0を使用することは一意ではないという一意の方法が必要です。

編集->-1に変更できない場合、これは機能するはずです

SELECT TOP 1 [Id]
FROM    @Table 
WHERE   (@Value BETWEEN [min] AND [max])
OR      (@Value >= [min] AND [max] = 0)
ORDER BY [MIN] DESC
于 2012-09-12T05:49:33.797 に答える
1

あなたはこれを試すことができます

DECLARE @Value INT = 400

SELECT * FROM TABLE 
WHERE (@Value >= 366 AND Min = 366 ) 
OR @Value BETWEEN Min AND MAX
于 2012-09-12T05:49:54.987 に答える
1

How about

SELECT  *
FROM    @Table 
WHERE   (@Value BETWEEN [MIN] AND [MAX])
OR      (@Value >= [MIN] AND [MAX] = 0)

Where @Value is the value you are looking for.

Please note however that more than 1 row might be returned if your [MIN],[MAX] ranges are not unique.

于 2012-09-12T05:43:54.873 に答える
1

これを試して:

declare @Search_val int=95;


SELECT  Id
FROM   your_table
WHERE   @Search_val between [min]     and [max]
OR      (@Search_val>min and [max]=0 and [min]!=0)
于 2012-09-12T05:44:15.337 に答える