TSQL使用正则表达式提取字符串的一部分

TSQL使用正则表达式提取字符串的一部分,sql,sql-server,regex,Sql,Sql Server,Regex,我将制作一个脚本,用光标遍历表的记录 并从格式如下的列值中提取yyy://xx/bb/147011“ 只有最后的数字147011,才能将此值放入变量中。 有可能做那样的事吗? 非常感谢 如果数值具有使用样本数据定义的精确位置,则可以执行以下操作: SELECT t.*, SUBSTRING(t.col, PATINDEX('%[0-9]%', t.col), LEN(t.col)) FROM table t; 这不需要光标。您可以只使用一个查询。以下内容获取最后一个/之后的所有内容: sel

我将制作一个脚本,用光标遍历表的记录 并从格式如下的列值中提取yyy://xx/bb/147011“ 只有最后的数字
147011
,才能将此值放入变量中。 有可能做那样的事吗?
非常感谢

如果数值具有使用样本数据定义的精确位置,则可以执行以下操作:

SELECT t.*, SUBSTRING(t.col, PATINDEX('%[0-9]%', t.col), LEN(t.col))
FROM table t; 

这不需要光标。您可以只使用一个查询。以下内容获取最后一个
/
之后的所有内容:

select right(str, charindex('/', reverse(str)) - 1 )
from (values ('yyy://xx/bb/147011')) v(str)

它不会专门检查它是否是一个数字,但也可以添加它。

您也可以使用下面的查询

SELECT RIGHT(RTRIM('yyy://xx/bb/147011'), 
CHARINDEX('/', REVERSE('/' + RTRIM('yyy://xx/bb/147011'))) - 1) AS LastWord

请原谅我的无知,但为什么要用它来绕线?@Giu它没有什么大的影响。