我正在尝试在字符串中找到特定的模式。该模式是六个字符(可以是字母或数字),后跟“ /”,后跟三个数字。
ABCDEF/123
以下是字符串的示例...
HMLR/MUR130/001
我正在尝试提取最右边的10个字符(它们并不总是出现在末尾,因此RIGHT()不是并且不是选项)。
我正在努力弄清SQL通配符,这就是我到目前为止所获得的...
CHARINDEX('______/[0-9]___',Nom_details,1)
...但是我没有得到任何结果...我在做什么错了?
答案 0 :(得分:4)
要获取匹配项的索引,可以使用PATINDEX
:
SELECT PATINDEX('%______/[0-9][0-9][0-9]%', 'HMLR/MUR130/001')
函数CHARINDEX
不支持模式。
要从数据中提取匹配项,可以将SUBSTRING
与上述PATINDEX
结合使用:
WITH test (data) AS (
SELECT 'HMLR/MUR130/001'
UNION ALL
SELECT 'ABCDEF/123'
UNION ALL
SELECT 'someotherstuff'
)
SELECT SUBSTRING(data, PATINDEX('%______/[0-9][0-9][0-9]%', data), 10)
FROM test
WHERE data LIKE '%______/[0-9][0-9][0-9]%'