我正在尝试使用TSQL传递两个10位数的电话号码块。
让我们说:
TelephoneNumber1: 1234560095
TelephoneNumber2: 1234561005
我的表包含3列:
ID, StartBlock, EndBlock
1, 5671231000, 5671232000
2, 1234561000, 1234562000
3, 2175551200, 2175551300
所以我要做的是找到TelephoneNumber1
和TelephoneNumber2
之间的所有数字,看看它是否存在于表格中StartBlock
和EndBlock
之间的任何记录之间
在这个例子中,它会找到第二条记录中已经使用过的数字,因为
当1234560095
到达1234561000
时,它会发现它已在使用中。
如何在StartBlock和EndBlock之间找到一个正在使用的数字?
答案 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 |
答案 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 强>