sql - 按找到的最后一个数字拆分字符串
问题描述
当找到最后一个数字时,我想将一个字符串分成两部分。下面是一些例子。
第一个例子:
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
解决方案
正如@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
推荐阅读
- gitlab - GitLab 合并请求到 GitHub?
- swift - 呈现全屏 UIViewController @iOS13
- typescript - Typescript switch case混淆编译器
- javascript - 如何让这个幻灯片自动播放
- python - 使用python搜索字符串的第一次出现并在上面的行中插入字符串
- java - 如何将字符串添加到火花数据集中的字符串数组列
- angular - 将查询参数添加到 http 请求时出错
- kubernetes - 如何使用 GKE 启用子域
- flutter - 在flutter中加载多个JSON文件
- php - WordPress - 无法在条件语句中创建分类