Jac*_*yan 7 sql nhibernate set
我在数据库表中有一组相当大的电话号码(大约200万).这些数字已插入块中,因此有许多连续的数字范围,范围内从10到10万.其中一些号码正在使用中,因此标记为不可用,其余的可用.给定一个特定的数字,我需要一种方法来找到连续的数字范围,包括这个数字的上方和下方.范围应该继续,直到找到不可用的数字,或遇到两个范围的边界.
例如,给出以下集合:
1000
1001
1002
1010
1011
1012
1013
1020
1021
1022
Run Code Online (Sandbox Code Playgroud)
使用1012作为参数进行搜索应该返回1010,1011,1012,1013.
形成查询以查找这些范围的好方法是什么?我们在SQL服务器上使用NHibernate,使用其中任何一个的解决方案都很好.
Nie*_*est 18
从理论上讲,集合中的项目没有特定的值,所以我假设你还有一些连续的ID列来定义数字的顺序.像这样的东西:
ID Number
1 1000
2 1001
3 1002
4 1010
5 1011
6 1012
7 1013
8 1020
9 1021
10 1022
Run Code Online (Sandbox Code Playgroud)
您可以创建一个包含以下结果的额外列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
Run Code Online (Sandbox Code Playgroud)
在Diff列中,相同范围内的数字将具有相同的结果.