模式匹配位数

时间:2018-10-12 17:29:30

标签: sql pattern-matching

当长度为4或>时,我需要从字符串中解析数字。 我有一个测试查询。我需要'66'之后的数字,如果找不到匹配项,也需要它返回空白。

DECLARE @Str nvarchar(1000)

SET @Str  =  'ANDERSON, Doe 66 M - MEDICAL  ONCOLOGY 40225   (DFCI)'
--SET @Str  =  'NTW LOANER - TELECOMMUNICATIONS    (DFCI)'


SELECT SUBSTRING(@str, 
          PATINDEX('% [0-9]%',@str)+1, 
          PATINDEX('%[^0-9]%',
                   SUBSTRING(@str, 
                             PATINDEX('% [0-9]%',@str)+1, 
                             LEN(@str))
                   + ' ')-1);

1 个答案:

答案 0 :(得分:0)

这就是我的解决方法:您重复模式x次数;我选择了3。

SUBSTRING(s.Description, 
      PATINDEX('% [0-9][0-9][0-9]%',s.Description)+1, 
      PATINDEX('%[^0-9]%',
               SUBSTRING(s.Description, 
                         PATINDEX('% [0-9][0-9][0-9]%',s.Description)+1, 
                         LEN(s.Description))
               + ' ')-1);