改进 SQL 子字符串提取

问题描述 投票:0回答:1

我有一个提取步骤的工作版本,看起来很长,我很好奇是否有一个我可能缺少的更简单的方法。我在论坛上的其他问题中看到过 SUBSTRING_INDEX() 引用,但是,我的 Sql Server Management Studio 版本无法识别该函数。

我有一个看起来像这样的字符串:Make\Model\Trim\New

我只想从此字符串中提取“Trim”。本质上,提取最后一个反斜杠和倒数第二个反斜杠之间的子字符串。

因为字符串长度和反斜杠数量可能会有所不同,所以我不能简单地说“在第二个和第三个反斜杠之后”。以下是我当前正在工作的代码。

Select
 REVERSE(SUBSTRING(
     REVERSE(CAR_DESC),
     CHARINDEX('\',REVERSE(CAR_DESC))+1,
     CHARINDEX('\',REVERSE(CAR_DESC),CHARINDEX('\',REVERSE(CAR_DESC))+1)-CHARINDEX('\',REVERSE(CAR_DESC))-1
     )) AS TEST1
FROM TABLEA

sql sql-server substring
1个回答
0
投票

你可以用 string_split 做一些仍然相当丑陋的事情:

select
reverse(value) from (
select * from
STRING_SPLIT(reverse('Make\Model\Trim\New'), '\',1)
)t where
ordinal = 2

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.