• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > SQL计算字符串中最大的递增子序列的方法

SQL计算字符串中最大的递增子序列的方法

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

Boss_he通过本文主要向大家介绍了sql 截取字符串,sql 替换字符串,sql截取字符串前几位,sql截取字符串后几位,sql 连接字符串等相关知识,希望本文的分享对您有所帮助

求字符串中最大的递增子序列

数据库环境:SQL SERVER 2005

如题,求字符串“abcbklmnodfghijkmer”中最大的递增子序列。这个字符串有点特别,

只由26个小写字母a-z组成。

大概思路如下:

1.将字符串转到一列存储,并生成行号

2.设置一个递增计数器列,默认为1,比较上下行的字符,如果在字典中的顺序是递增,

则计数器加1,否则,计数器置1

3.找出计数器最大的数及对应的行号,根据这2个数截取字符串

思路有了,下面直接贴代码

DECLARE @vtext VARCHAR(255)
SET @vtext = 'abcbklmnodfghijkmer'
/*讲字符串转成一列存储,并生成行号*/
WITH x0
   AS ( SELECT number AS id ,
      SUBSTRING(@vtext, number, 1) AS letter
    FROM  master.dbo.spt_values
    WHERE type = 'P'
      AND number <= LEN(@vtext)
      AND number >= 1
    ),/*实现计数器*/
  x1 ( id, letter, clen )
   AS ( SELECT id ,
      letter ,
      1 AS clen
    FROM  x0
    WHERE id = 1
    UNION ALL
    SELECT x0.id ,
      x0.letter ,
      CASE WHEN x1.letter <= x0.letter THEN x1.clen + 1
        ELSE 1
      END AS clen
    FROM  x0 ,
      x1
    WHERE x0.id = x1.id + 1
    )
 /*截取字符串*/
 SELECT SUBSTRING(@vtext, start, sublen) AS 最大子序列
 FROM ( SELECT id ,
      clen ,
      MAX(clen) OVER ( ) AS maxclen ,
      id - MAX(clen) OVER ( ) + 1 AS start ,
      MAX(clen) OVER ( ) AS sublen
    FROM  x1
   ) t
 WHERE clen = maxclen
</div>

求出的最大子序列是

通过以上的思路和代码,希望可以对大家有所启迪和帮助。

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

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

  • SQL计算字符串中最大的递增子序列的方法

相关文章

  • 2017-05-11探讨如何配置SQL2008,让其允许C#远程外部连接的方法详解
  • 2017-05-11MSSQL 字符段分段更新
  • 2017-05-11SQL Server 移动系统数据库
  • 2017-05-11SQL Server 2000向SQL Server 2008 R2推送数据图文教程
  • 2017-05-11简单实用SQL脚本Part SQLServer 2005 链接服务器
  • 2017-05-11SQL Server复制需要有实际的服务器名称才能连接到服务器
  • 2017-05-11SQLServer 2005 列所有存储过程的语句
  • 2017-05-11SQL2005CLR函数扩展-深入环比计算的详解
  • 2017-05-11Win2003系统下SQL Server 2008安装图解教程(详细图解)
  • 2017-05-11SQLSERVER2005 中树形数据的递归查询

文章分类

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

最近更新的内容

    • sql server 2008数据库连接字符串大全
    • SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)
    • Sql2005注射辅助脚本[粗糙版]
    • SQL Server 2008网络协议深入理解
    • SQL Server 2005 定时执行SQL语句的方法
    • sql里将重复行数据合并为一行数据使用逗号进行分隔
    • SQL Server储过程加密和解密原理深入分析
    • SQL Server 2000向SQL Server 2008 R2推送数据图文教程
    • Access 导入到SQL Server 2005的方法小结
    • SQLServer 数据集合的交、并、差集运算

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

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