SQL计算字符串中最大的递增子序列的方法(sql语句最大长度)深度揭秘

随心笔谈2年前发布 编辑
162 0
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买


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

© 版权声明

相关文章