SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值

2016-02-19 09:18 7 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

其实大家稍微动下大脑,问题可以转化为,是求最小连续数组中的最大值,数组大小可以为1。

=======================================================================

做戏做全套,送佛送到西。

为了便于学习研究,必然是要写全套示例代码的。

------------------------------------------------------------------------------------- --by wls --非专业SQL 不求高效 但求能跑 USE tempdb GO ------------------------------------------------------------------------------------- IF OBJECT_ID (N't_MaxInMinContinuousArr', N'U') IS NOT NULL DROP TABLE t_MaxInMinContinuousArr; GO CREATE TABLE t_MaxInMinContinuousArr(SNId INTEGER PRIMARY KEY,SomeDate DATETIME) GO ------------------------------------------------------------------------------------- DECLARE  @i INT SET @i =   --SNId起始值 DECLARE @TestScale INTEGER SET @TestScale=+@i  --数据规模 DECLARE @t DATETIME , @t DATETIME , @dd INT , @dayadd INT , @tRes DATETIME SET @t = '-- ::' SET @t = '-- ::' SET @dd = DATEDIFF(dd, @t, @t) WHILE @i  @TestScale  --数据规模   BEGIN SET @dayadd = @dd * RAND() SET @tRes = DATEADD(dd, @dayadd, @t) + RAND()  INSERT  INTO t_MaxInMinContinuousArr VALUES(@i , @tRes)SET @i = @i +END GO --SELECT TOP * FROM t_MaxInMinContinuousArr --GO ------------------------------------------------------------------------------------- --Delete some SNId randomly DECLARE @TestScale INTEGER SET @TestScale=  --数据规模 DELETE FROM t_MaxInMinContinuousArr WHERE SNId=--(SELECT abs(checksum(newid()))%@TestScale + ) DELETE FROM t_MaxInMinContinuousArr WHERE SNId=--(SELECT abs(checksum(newid()))%@TestScale + ) GO --SELECT TOP * FROM t_MaxInMinContinuousArr --GO ------------------------------------------------------------------------------------- --now find the SNId that SNId+ is missing. WITH TMinAndMaxSNId AS( SELECT MIN(SNId) AS MinSNId,MAX(SNId) AS MaxSNId FROM t_MaxInMinContinuousArr  --The min and max SNId ), TContinuousId AS ( SELECT number AS SNIdCmped FROM master..spt_values,TMinAndMaxSNId WHERE type='p' AND number =TMinAndMaxSNId.MinSNId AND number =TMinAndMaxSNId.MaxSNId ) SELECT MIN(res.SNIdCmped)- FROM ( SELECT  SNIdCmped FROM TContinuousId EXCEPT  SELECT  SNId FROM t_MaxInMinContinuousArr) AS res  GO

  附上执行计划

 =======================================================================

我也不知道这代码能不能用,先发表了后续慢慢改吧。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

网络代码有风险 复制粘贴需谨慎

执行这两个语句清缓存。

DBCC FREEPROCCACHE GODBCC DROPCLEANBUFFERSGO

=======================================================================

20151103-01

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

代码有问题 有空改

=======================================================================

20151103-02

又尝试了一下(大概几十次猜范围),发现只能处理2048以内的缺失查找。这是个敏感的数字,得研究下。

当然也可能是我不专业,写的代码有问题。

幸好不是我在开发、生产中遇到的问题,还能悠哉悠哉的分析查找问题。

这件事的启示是:你们这些讨人厌的爬虫小网站,错误代码就在这里我还就是不改了。

        你们的行为是违法的,并不是说通知然后删除就是可以的。

        我保留一切法律赋予我的权利。

来源:http://www.tulaoshi.com/n/20160219/1590307.html

延伸阅读
会导致不孕的食物说明 每一种食物包含的元素都是多种多样的,可能其中的某一种对人体有利,可另一种却有损害健康的危险,哪些食物会导致不孕不育? 咖啡 美国全国环境卫生科学研究所的研究人员对104位希望怀孕的女性进行研究得出结论:咖啡对受孕有直接影响。在这些女性中,每天喝一杯咖啡以上的女性,怀孕的可能性只是不喝此种...
最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现。我们服务器使用的是sql server 2008 R2,其他“服务器”使用的都是SQL Server 2000,还都是运行在Windows XP上的,整个过程遇到了一些问题,也参考了一些文档,最终费了好多事才算搞定。 SQLServer 2000的复制服务包括...
一、下载SQL Server 2008 R2安装文件 cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso 二、将安装文件刻录成光盘或者用虚拟光驱加载,或者直接解压,打开安装文件,出现下面的界面 安装SQL Server 2008 R2需要.NET Framework 3.5 SP1支持 这里我们的操作系统是Windows Server 2008 R2,已经默认自带了.NET Frame...
标签: 电脑入门
     北京时间6月25日早间消息,针对“用户呼吁Outlook 2010改用HTML渲染引擎”的建议,微软周三做出了回应,称Outlook 2010对HTML的渲染不存在问题,将继续使用Word渲染引擎。 从2007年开始,微软将Outlook的渲染引擎从HTML改为Word。但不少用户反映,Word对HTML邮件的渲染效果并不理想,即将上市的Outlook 2010更是如...
标签: 电脑入门
网友提问:安装wps之后,将其打开报错文件,打开的时候提示wps目录不存在的现象。并且将其卸载也是于事无补,那wps临时目录不存在提示无法卸载是怎么回事?下面就来看看wps临时目录不存在提示该如何解决? 故障解决: 一、wps应用程序本身的故障,先对其进行修复,尝试用工具里的配置工具修复。修复之后发现还是故障依旧的话,那么再用360安...

经验教程

337

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部