间隔的编号

delectation 2008-01-22 02:02:40
00-c0000-001
00-c0000-002
00-c0000-003
00-c0000-005
00-c0000-009
00-c0000-100
00-c0000-108
00-c0000-110

这个编号前几位都是相同的00-c0000-,只有最后三位不同.需要找最小的那个间隔号.
最后三位目前是:001,002,003,004,005,006,007,008,009,100.
红色就是缺少的间隔,但要找的是最小的那个:004

由于数据量比较大,所以算法一定要.
...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
delectation 2008-01-22
  • 打赏
  • 举报
回复
前几位可能是:00-p0000-,00-m0000-
为了简单我只说了:00-c0000-

这个编号前几位都是相同的00-c0000-,只有最后三位不同.
--------------------------------------------------
再大也就一千行记录.
JiangHongTao 2008-01-22
  • 打赏
  • 举报
回复
declare @t table(col varchar(15))
insert @t select '00-c0000-001'
insert @t select '00-c0000-002'
insert @t select '00-c0000-003'
insert @t select '00-c0000-005'
insert @t select '00-c0000-009'
insert @t select '00-c0000-100'
insert @t select '00-c0000-108'
insert @t select '00-c0000-110'

select top 1 left(col,len(col)-3)+right(right(col,3)+999,3) from @t a
where right(col,3) <> (select count(*) from @t b where col<=a.col)
order by col
/*

---------------------
00-c0000-004

(所影响的行数为 1 行)
*/
JiangHongTao 2008-01-22
  • 打赏
  • 举报
回复
select top 1 convert(int,right(col,3))+1 from t  a
where exists (select count(*) <> convert(int,right(a.col),3) from t b where col<=a.col)
JiangHongTao 2008-01-22
  • 打赏
  • 举报
回复
这个编号前几位都是相同的00-c0000-,只有最后三位不同.
--------------------------------------------------
再大也就一千行记录.

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧