• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值

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

作者:王林森 字体:[增加 减小] 来源:互联网 时间:2017-05-11

王林森通过本文主要向大家介绍了SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值等相关知识,希望本文的分享对您有所帮助

其实大家稍微动下大脑,问题可以转化为,是求最小连续数组中的最大值,数组大小可以为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
</div>

  附上执行计划

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

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

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

执行这两个语句清缓存。

DBCC FREEPROCCACHE 
GO
DBCC DROPCLEANBUFFERS
GO
</div>

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

20151103-01

代码有问题 有空改

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

20151103-02

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

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

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

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

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

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

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

相关文章

  • 2017-05-11在SQL Server 2005所有表中搜索某个指定列的方法
  • 2017-05-11SQL Server 2008 安装和配置图解教程(附官方下载地址)
  • 2017-05-11SQLServer2005安装提示服务无法启动原因分析及解决
  • 2017-05-11SQL Server2008 R2 数据库镜像实施手册(双机)SQL Server2014同样适用
  • 2017-05-11sql2008安装教程 SQL Server 2008 R2 安装图解
  • 2017-05-11SQLServer2005中的SQLCMD工具使用
  • 2017-05-11SQL server 2008 数据库优化常用脚本
  • 2017-05-11SQL2005 性能监视器计数器错误解决方法
  • 2017-05-11SQL SERVER 2008 R2配置管理器出现“远程过程调用失败”(0x800706be)错误提示
  • 2017-05-11SQL2005CLR函数扩展-繁简转换的实现代码

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • sql2008 hql语句翻译过来的分页语句介绍
    • SQL server 管理事务和数据库介绍
    • SQL server 表操作介绍
    • SQL SERVER 2008 R2配置管理器出现“远程过程调用失败”(0x800706be)错误提示
    • sql2008评估期已过的解决办法及序列号
    • Access 导入到SQL Server 2005的方法小结
    • Win7系统安装MySQL5.5.21图解教程
    • 简述SQL Server 2005数据库镜像相关知识
    • SQL 2008安装时出现从新启动计算机提示如何解决
    • sqlserver2005自动创建数据表和自动添加某个字段索引

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有