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

Sql 从相对路径获取字符串名称,sql,sql-server,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.

我在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
。逻辑是我们必须到达字符串的末尾,然后做一个相反的操作,然后到达下面的第一个
/
\

答案是假设您使用的是SQL Server

以下是您需要的代码:

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

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

我并没有完全理解您的问题,而是试图实现您的解释

  • 您需要反向使用
    斜杠
  • 将@Reverse声明为varchar(1000)
    set@Reverse='C:\Test1\Test2\Majorrecords\minorrecords\imp\impfiolename1.txt';
    声明@rrr varchar(1000)

  • 您只需要
    字符串的最后一部分

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

    您只需要获取正斜杠或反斜杠的姓和反斜杠您使用的是什么SQL?是SQL Server、Oracle、MySQL还是其他什么?@Sriharsha Karanth如果我有任何错误,请发表评论谢谢,先生,Hardik。不幸的是,我明天早上就能做了。请原谅我等到时间,我会给你回电的。非常感谢。还有哈迪克,如果我们能概括一下这个问题的话。我的意思是你在这里取得了以“impfiolename1.txt”结尾的第一条记录,我有100条类似的记录@Reverse只保留第一张唱片…你能帮忙吗?谢谢你需要把它写在你的选择条款里。像从您的表名中选择右键(@Reverse,charindex('/',Reverse(@rrr),1)-1一样Hi Hardik,抱歉耽搁了。它给出一个空值。谢谢你抽出时间。