按找到的最后一个数字拆分字符串

时间:2018-09-25 20:11:56

标签: sql sql-server

我想在找到最后一个数字时将字符串分成两部分。下面是一些示例。

第一个示例:

DECLARE @VAR1 VARCHAR(100) = 'AC-N-823 Germany, France'
SELECT RIGHT(@VAR1,CHARINDEX('[0-9]',REVERSE(@VAR1))-1)

我的结果应该是:

1st part: AC-N-823
2nd part: Germany, France

第二个示例:

DECLARE @VAR2 VARCHAR(100) = 'CR-21-Belgium-Canada'
SELECT RIGHT(@VAR2,CHARINDEX('[0-9]',REVERSE(@VAR2))-1)

我的结果应该是:

1st part: CR-21
2nd part: Belgium-Canada    

1 个答案:

答案 0 :(得分:2)

就像@ haag1所说的那样,您应该看看允许使用模式的PATINDEX函数。当省略两个部分之间的字符时,两个长度(左和右)的总和必须为LEN(@VAR)-1,所以这可能是您要查找的内容:

SELECT 
    LEFT(@VAR, LEN(@VAR) + 1 - PATINDEX('%[0-9]%', REVERSE(@VAR))) AS FirstPart,
    RIGHT(@VAR, PATINDEX('%[0-9]%', REVERSE(@VAR)) - 2) AS SecordPart