SQL - 在最后一次正斜杠后拉出所有内容

时间:2015-09-14 19:45:54

标签: spotfire

我正在尝试将字符串拉到下面字符串中最后一个正斜杠的右边。

/Applied Analytics/URMFG/Service Analysis/ServiceAnalysis

基本上,我希望看到ServiceAnalysis返回。

我遇到过以下SQL,它接近我需要的,但不完全正确。

=MID(K19, FIND("/",K19)+1, LEN(K19))

5 个答案:

答案 0 :(得分:3)

在SQL中,你可以这样做:

declare @string varchar(100) = '/Applied Analytics/URMFG/Service Analysis/ServiceAnalysis';

select RIGHT(@string,charindex('/',reverse(@string),1)-1)

然而,仍然在等待您的EXCEL是否正在引用(因为这看起来像是一个EXCEL公式)。

如果是Excel,那么您可以使用this post中的Reverse()函数并将其应用为:

enter image description here

以下是公式:

=Reverse(LEFT(Reverse(A1),FIND("/",Reverse(A1),1)-1))

答案 1 :(得分:2)

DECLARE @test NVARCHAR(100)
SET @test = '/Applied Analytics/URMFG/Service Analysis/ServiceAnalysis'

SELECT REVERSE(LEFT(REVERSE(@test), CHARINDEX('/', REVERSE(@test)) -1))

反转String并找到/

的第一个实例

找到/

左侧的字符

再次反转以获得所需的结果

答案 2 :(得分:1)

使用 PARSENAME() 功能的另一种方法

DECLARE @String NVARCHAR(100)
SET @String = '/Applied Analytics/URMFG/Service Analysis/ServiceAnalysis'

SELECT  PARSENAME(REPLACE(SUBSTRING(@String, 2, 100), '/', '.'), 1) AS [4th part],
        PARSENAME(REPLACE(SUBSTRING(@String, 2, 100), '/', '.'), 2) AS [3rd part],
        PARSENAME(REPLACE(SUBSTRING(@String, 2, 100), '/', '.'), 3) AS [2nd part],
        PARSENAME(REPLACE(SUBSTRING(@String, 2, 100), '/', '.'), 4) AS [1st part]

输出

enter image description here

答案 3 :(得分:1)

正规表达救援!您可以使用RXReplace()函数实现此目的:

RXReplace([column],"^/.*/(.*)$","$1","")

我会让你自己查看RXReplace()文档,但只是为了解释正则表达式本身:

^/匹配字符串的开头和起始/

.*/匹配接下来的任何字符,后跟一个/,它是字符串结尾之前/之前(在我们想要提取的位之前)

(.*)$匹配接下来的任何字符,将它们放入“捕获组”(基本上是变量),然后是字符串的结尾

$1是一个引用上面的捕获组的标记(通常在正则表达式中看起来像\1,但Spotfire有点不同)

几乎每当你需要处理在Spotfire表达式中提取字符串时,RXReplace()就是你想要的。它比进行大量Left()Right()Len()更具可持续性,尽管最初的努力可能会高一些。

http://www.regular-expressions.info/的更多正则表达式信息。

答案 4 :(得分:0)

以下SQL语句在T-SQL 2017中对我有用:

SELECT RIGHT([Filename], CHARINDEX('\', REVERSE('\' + [Filename])) - 1)