sql – 查找一组数字中的连续范围
发布时间:2020-12-12 06:59:02 所属栏目:MsSql教程 来源:网络整理
导读:我在数据库表中有一组相当大的电话号码(大约200万).这些数字已插入块中,因此有许多连续的数字范围,范围内从10到10万.其中一些号码正在使用中,因此标记为不可用,其余号码可用.给定一个特定的数字,我需要一种方法来找到连续的数字范围,包括这个数字的上方和下方
我在数据库表中有一组相当大的电话号码(大约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列中,相同范围内的数字将具有相同的结果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |