首页 > 解决方案 > 从一行字符串中提取最大的数字

问题描述

我在#temp_table 中有这样的数据:

   SCORM_VARNAME
1) cmi.interactions.0.id
2) cmi.interactions.1.id
3) cmi.interactions.10.id
4) cmi.interactions.5.id
5) cmi.interactions.8.id

等等等等……

在上面的示例中,我最终想要保存在变量中的数字是 10。

我想返回这些表中出现的最高数字,它可以是 0-100000(我对此表示怀疑),但它不能被硬编码。它只能上升到3!

我有以下代码,它基本上接受你给它的任何字符串,并正确地提取数字,这太棒了!

DECLARE @string varchar(100)
SET @string = 'cmi.interactions.10.id'
WHILE PATINDEX('%[^0-9]%',@string) <> 0

SET @string = STUFF(@string,PATINDEX('%[^0-9]%',@string),1,'')

SELECT @string

除了我不知道如何在 temp_table 中的所有行上运行这个函数,或者用最大的数字替换每一行,或者返回最大的数字。

所以要么我需要找到一种方法来返回表中找到的最高数字,或者你们是否可以通过找出一些方法来更新 temp_table 并用其中找到的数字替换每个字符串来帮助我......我将能够做剩下的。

标签: sql-server

解决方案


set @v = (
    select max(cast(replace(replace(s, 'cmi.interactions.', ''), '.id', '') as int))
    from T
);

推荐阅读