从相对路径获取字符串名称

时间:2014-11-02 07:56:57

标签: sql sql-server

我在SQL Server中有一个表(比如testable)。而且我只有一列(比如testcolumn)。在本专栏中,我有100多条记录。每条记录的格式如下。

C:\Test1\Test2\Majorrecords\minorrecords\imp\impfiolename1.txt  
/opt/home/test/admincreatedbyme/user1/user1recs/impinfo.sys  

我实际上需要修剪或仅获取数据的最后部分。仅在我们的示例中为impfiolename1.txtimpinfo.sys。逻辑是我们必须到达字符串的末尾,然后转到第一个/\

2 个答案:

答案 0 :(得分:0)

以下答案假设您使用的是SQL Server。

以下是您需要的代码:

SELECT 
    RIGHT(testcolumn, CHARINDEX('\', REVERSE(REPLACE(testcolumn, '/', '\'))) - 1) AS FileName
FROM testable

首先,有一个REPLACE可以将正斜杠更改为反斜杠,因此进一步的逻辑可以仅用于basckslash。然后REVERSE函数用于以相反的顺序获取文本。使用CHARINDEX,您将获得最后一个反斜杠的索引。然后使用RIGHT函数,您只需要您需要的符号数。

答案 1 :(得分:0)

我没有完全回答你的问题,而是试图实现你的期望。

  1. 您需要反向Slashes
  2. Declare @Reverse as varchar(1000) set @Reverse = 'C:\Test1\Test2\Majorrecords\minorrecords\imp\impfiolename1.txt'; declare @rrr varchar(1000)

    1. 您只需要String
    2. 的最后部分

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