查找2列之间是否存在phonenumbers

时间:2013-01-15 22:55:00

标签: sql tsql loops between

我正在尝试使用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之间找到一个正在使用的数字?

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我不确定我是否遗漏了一些东西,但不会只是:

SELECT * from MYTABLE 
WHERE (StartBlock=>TelehoneNumber1 AND StartBlock<=TelephoneNumber2) 
OR (EndBlock=>TelehoneNumber1 AND EndBlock<=TelephoneNumber2)
编辑:看了看这个,看了BETWEEN,另一种选择: http://www.w3schools.com/sql/sql_where.asp

答案 2 :(得分:1)

这是你要找的吗?

SELECT * FROM tel
WHERE StartBlock <= '1234561005' AND EndBlock >= '1234561005'

<强>结果

| ID | STARTBLOCK |   ENDBLOCK |
--------------------------------
|  2 | 1234561000 | 1235552000 |

See a demo

答案 3 :(得分:1)

这可以通过简单地完成:

SELECT * FROM tblName
WHERE StartBlock >= '5671231000' AND EndBlock <= '5671232000'

<强>结果:

| ID | StartBlock | EndBlock |
--------------------------------
| 1  | 5671231000 | 5671232000 |
--------------------------------
| 4  | 5671231120 | 5671231010 |
--------------------------------
| 5  | 5671231540 | 5671231999 |

它应该产生一个带有开始和结束块的结果,包括介于两者之间的所有内容。看看这些TSQL example,您将找到两种方法来实现这一目标。

<强> Demo here