我想在找到最后一个数字时将字符串分成两部分。下面是一些示例。
第一个示例:
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
答案 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