我在SQL Server中有一个表(比如testable
)。而且我只有一列(比如testcolumn
)。在本专栏中,我有100多条记录。每条记录的格式如下。
C:\Test1\Test2\Majorrecords\minorrecords\imp\impfiolename1.txt
/opt/home/test/admincreatedbyme/user1/user1recs/impinfo.sys
我实际上需要修剪或仅获取数据的最后部分。仅在我们的示例中为impfiolename1.txt
或impinfo.sys
。逻辑是我们必须到达字符串的末尾,然后转到第一个/
或\
。
答案 0 :(得分:0)
以下答案假设您使用的是SQL Server。
以下是您需要的代码:
SELECT
RIGHT(testcolumn, CHARINDEX('\', REVERSE(REPLACE(testcolumn, '/', '\'))) - 1) AS FileName
FROM testable
首先,有一个REPLACE
可以将正斜杠更改为反斜杠,因此进一步的逻辑可以仅用于basckslash。然后REVERSE
函数用于以相反的顺序获取文本。使用CHARINDEX
,您将获得最后一个反斜杠的索引。然后使用RIGHT
函数,您只需要您需要的符号数。
答案 1 :(得分:0)
我没有完全回答你的问题,而是试图实现你的期望。
Slashes
Declare @Reverse as varchar(1000)
set @Reverse = 'C:\Test1\Test2\Majorrecords\minorrecords\imp\impfiolename1.txt';
declare @rrr varchar(1000)
String
select RIGHT(@Reverse, charindex('/', reverse(@rrr), 1) -1)