sql-server - 从一行字符串中提取最大的数字
问题描述
我在#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 并用其中找到的数字替换每个字符串来帮助我......我将能够做剩下的。
解决方案
set @v = (
select max(cast(replace(replace(s, 'cmi.interactions.', ''), '.id', '') as int))
from T
);
推荐阅读
- python-3.x - 合并2个嵌套字典并获得单个字典
- java - 根据列数显示表头Java
- css - React Material UI - 响应式 CardMedia
- php - 在 WooCommerce 订单详细信息中保存自定义结帐交货时间字段值
- vb.net - 在 VB.net 上运行和转储命令行
- c - 有人可以帮我理解这是如何工作的吗?
- python - XPath 谓词将选定节点与上下文节点进行比较?
- typescript - Typescript 在检查值时未能考虑“从不”函数
- typescript - 错误 TS2532 - 对象可能是“未定义”,它不能是未定义的
- laravel - 如何避免错误“此路由不支持 PUT 方法。支持的方法:GET、HEAD。” 使用 Laravel