我正在尝试使用TSQL传递两个10位电话号码块。

可以说:

TelephoneNumber1: 1234560095
TelephoneNumber2: 1234561005


我的表格由3列组成:

ID, StartBlock, EndBlock
1, 5671231000, 5671232000
2, 1234561000, 1234562000
3, 2175551200, 2175551300


所以我想做的是找到TelephoneNumber1TelephoneNumber2之间的所有数字,并查看表中StartBlockEndBlock之间的任何记录之间是否存在该数字。

在此示例中,它将找到第二条记录中已在使用的数字,因为
1234560095进入1234561000时,它将发现它已在使用中。

我如何做到这一点以找到StartBlock和EndBlock之间正在使用的数字?

最佳答案

declare @T table
(
  ID int,
  StartBlock bigint,
  EndBlock bigint
)

insert into @T values
(1, 5671231000, 5671232000),
(2, 1234561000, 1234562000),
(3, 2175551200, 2175551300)

declare @TelephoneNumber1 bigint
declare @TelephoneNumber2 bigint

set @TelephoneNumber1 = 1234560095
set @TelephoneNumber2 = 1234561005

select *
from @T
where StartBlock <= @TelephoneNumber2 and
      EndBlock >= @TelephoneNumber1

08-06 22:25