首页 > 解决方案 > 按找到的最后一个数字拆分字符串

问题描述

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

第一个例子:

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    

标签: sqlsql-server

解决方案


正如@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

推荐阅读