SQL通配符-尝试在字符串中查找字符/数字序列

时间:2019-02-18 10:39:06

标签: sql sql-server tsql

我正在尝试在字符串中找到特定的模式。该模式是六个字符(可以是字母或数字),后跟“ /”,后跟三个数字。

ABCDEF/123

以下是字符串的示例...

HMLR/MUR130/001

我正在尝试提取最右边的10个字符(它们并不总是出现在末尾,因此RIGHT()不是并且不是选项)。

我正在努力弄清SQL通配符,这就是我到目前为止所获得的...

 CHARINDEX('______/[0-9]___',Nom_details,1)

...但是我没有得到任何结果...我在做什么错了?

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]%'
  

demo on dbfiddle.uk