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

时间:2019-02-13 11:29:46

标签: sql sql-server regex

我将创建一个脚本,该脚本使用游标遍历表的记录 并从格式为"yyy://xx/bb/147011"的列值中提取 仅使用最后一个数字147011并将此值放入变量中。 可以这样做吗? 非常感谢。

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您还可以使用以下查询。

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