sql – 查找一组数字中的连续范围

前端之家收集整理的这篇文章主要介绍了sql – 查找一组数字中的连续范围前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在数据库表中有一组相当大的电话号码(大约200万).这些数字已插入块中,因此有许多连续的数字范围,范围内从10到10万.其中一些号码正在使用中,因此标记为不可用,其余号码可用.给定一个特定的数字,我需要一种方法来找到连续的数字范围,包括这个数字的上方和下方.范围应该继续,直到找到不可用的数字,或遇到两个范围的边界.

例如,给出以下集合:

1000
1001
1002
1010
1011
1012
1013
1020
1021
1022

使用1012作为参数进行搜索应该返回1010,1011,1012,1013.

形成查询以查找这些范围的好方法是什么?我们在sql服务器上使用NHibernate,使用其中任何一个的解决方案都很好.

解决方法

从理论上讲,集合中的项目没有特定的值,所以我假设你还有一些连续的ID列来定义数字的顺序.像这样的东西:
ID  Number
1   1000
2   1001
3   1002
4   1010
5   1011
6   1012
7   1013
8   1020
9   1021
10  1022

您可以创建一个包含Number – ID结果的额外列:

ID  Number  Diff
1   1000    999
2   1001    999
3   1002    999
4   1010    1006
5   1011    1006
6   1012    1006
7   1013    1006
8   1020    1012
9   1021    1012
10  1022    1012

在Diff列中,相同范围内的数字将具有相同的结果.

猜你在找的MsSQL相关文章