我正在尝试将字符串拉到下面字符串中最后一个正斜杠的右边。
/Applied Analytics/URMFG/Service Analysis/ServiceAnalysis
基本上,我希望看到ServiceAnalysis
返回。
我遇到过以下SQL,它接近我需要的,但不完全正确。
=MID(K19, FIND("/",K19)+1, LEN(K19))
答案 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()函数并将其应用为:
以下是公式:
=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]
输出
答案 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)