Sql 从相对路径获取字符串名称
我在SQL Server中有一个表(比如说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.
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,抱歉耽搁了。它给出一个空值。谢谢你抽出时间。