另类获得连续号码的求法

原创 2006年06月02日 20:04:00

-- 另类获得连续号码的求法
 
DECLARE @Temp table (sNo varchar(50) primary key)
Insert into @Temp values('DMC060001')
Insert into @Temp values('DMC060002')
Insert into @Temp values('DMC060003')
Insert into @Temp values('DMC060006')
Insert into @Temp values('DMC060007')
Insert into @Temp values('DMC060010')
Insert into @Temp values('DMC060014') 
Insert into @Temp values('DMC060016')
Insert into @Temp values('DMC060017')
Insert into @Temp values('DMC060018')
 
DECLARE @Str varchar(20),          --保存上一字符
        @ResultStr  varchar(8000), --最后返回字符
        @New bit,                  --本次比较的标志
        @Old bit,                  --上一个比较的标志
        @EndStr varchar(20)        --用作最后一次连续的判断

Select @EndStr=max(sNo) from @Temp

update @temp set
    @ResultStr  =case when @ResultStr Is NULL then sNo else @ResultStr end ,
    @New =(case when (Right(sNo, PATINDEX('%[A-Z]%',Reverse(sNo))-1)=
                      Right(@str,PATINDEX('%[A-Z]%',Reverse(@str))-1)+1) then 1 else 0 end),
    @ResultStr  =@ResultStr+(case when (@New=0 and @old=1) then '-'+Right(@str,PATINDEX('%[A-Z]%',Reverse(@str))-1)+','+sNo
                    when (@New=0 and @old=0) then ','+sNo
                    when (sNo=@EndStr) then '-'+right(sNo,PATINDEX('%[A-Z]%',Reverse(sNo))) else '' end), 
    @old=@New, @str=sNo  
Select @ResultStr as [组合字符]

--结果
/*
组合字符
------------------------------------------------------------------------------------
DMC060001-060003,DMC060006-060007,DMC060010,DMC060014,DMC060016-060018
 
*/ 


 上述只是一个简单例子,可以由这种方式而扩展其他类型的。


相关文章推荐

高效聚类中dc求法

  • 2016年05月27日 15:59
  • 1.27MB
  • 下载

matlab线性方程求法分类

matlab中线性方程组Ax=b求解方法众多,容易糊涂,这里对各种方法进行概述:   1、求逆法         x = A \ b    或    x=inv(A) * b   以下是矩阵分...
  • porly
  • porly
  • 2012年08月17日 14:56
  • 861

java另类分治法凸包问题

  • 2013年04月16日 21:36
  • 1007KB
  • 下载

chm格式电子书另类反编译法:使用压缩软件7Z简单实现CHM电子书反编译 | 志文工作室

转自 chm格式电子书相信很多人都比较熟悉了,当然这种格式优点很多。有时候我们看着制作精美的chm电子书,希望里面的图片或是资料提取出来,这时候大家可能首先想到的就是把它反编译。如此...

BIOS INT 10-13功能调用的“另类”玩法

http://www.cnblogs.com/ljf9201314/archive/2008/07/21/1247653.html BIOS INT 10-13功能调用的“另类”玩法 Na...

RPM的另类用法

RPM不仅在安装,升级,卸载方面工作出色,而且在查询方面比其它软件包管理工具更胜一筹。这从以下几种情况可以看出:  * 当你在浏览系统文件时,发现一个文件,想知道它来自哪个软件包时,可以用RPM来查...

phantomjs 另类用法

这几天接到了一个数据采集的项目  通过对网站的前期分析得到以下内容 1.网站本身采用.NET开发 2.需抓取内容采用DES加密 虽然得到了前端javascript的加解密算法,但大家也知道跨语言算法想...

android应用程序开发另解及Android SDK工具集的另类用法

相信对于广大Android应用开发爱好者来说,Android SDK工具集的大家都已经能够很熟练的使用,但是我这里要介绍的是SDK工具集的非常用使用方法,即“另类用法”。首先要说的是,大部分的Andr...

[android]Android随笔:另类用法

一、  获取系统版本号: [java] view plaincopy PackageInfo info = this.getPackageMan...

另类入侵法:旁注

  • 2006年02月23日 15:31
  • 5.7MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:另类获得连续号码的求法
举报原因:
原因补充:

(最多只允许输入30个字)